refact: spell out PPMP acronym

Signed-off-by: Axel Meinhardt <axel.meinhardt@bosch-si.com>
diff --git a/200.html b/200.html
index 8823ec3..f1b6395 100644
--- a/200.html
+++ b/200.html
@@ -2,8 +2,8 @@
 <html data-n-head="">
   <head data-n-head="">
     <title data-n-head="true">Eclipse unide - Welcome</title><meta data-n-head="true" charset="utf-8"/><meta data-n-head="true" name="viewport" content="width=device-width, initial-scale=1"/><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"/><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"/>
-  <link href="/unide/files/1750fa95f99b26cdec14.css" rel="stylesheet"></head>
+  <link href="/unide/files/aacbf5835f7143d93ae2.css" rel="stylesheet"></head>
   <body data-n-head="">
     <div id="__nuxt"><style>#nuxt-loading {  visibility: hidden;  opacity: 0;  position: absolute;  left: 0;  right: 0;  top: 0;  bottom: 0;  display: flex;  justify-content: center;  align-items: center;  flex-direction: column;  animation: nuxtLoadingIn 10s ease;  -webkit-animation: nuxtLoadingIn 10s ease;  animation-fill-mode: forwards;  overflow: hidden;}@keyframes nuxtLoadingIn {  0% {visibility: hidden;opacity: 0;  }  20% {visibility: visible;opacity: 0;  }  100% {visibility: visible;opacity: 1;  }}@-webkit-keyframes nuxtLoadingIn {  0% {visibility: hidden;opacity: 0;  }  20% {visibility: visible;opacity: 0;  }  100% {visibility: visible;opacity: 1;  }}#nuxt-loading>div,#nuxt-loading>div:after {  border-radius: 50%;  width: 5rem;  height: 5rem;}#nuxt-loading>div {  font-size: 10px;  position: relative;  text-indent: -9999em;  border: .5rem solid #F5F5F5;  border-left: .5rem solid #50237f;  -webkit-transform: translateZ(0);  -ms-transform: translateZ(0);  transform: translateZ(0);  -webkit-animation: nuxtLoading 1.1s infinite linear;  animation: nuxtLoading 1.1s infinite linear;}#nuxt-loading.error>div {  border-left: .5rem solid #ff4500;  animation-duration: 5s;}@-webkit-keyframes nuxtLoading {  0% {-webkit-transform: rotate(0deg);transform: rotate(0deg);  }  100% {-webkit-transform: rotate(360deg);transform: rotate(360deg);  }}@keyframes nuxtLoading {  0% {-webkit-transform: rotate(0deg);transform: rotate(0deg);  }  100% {-webkit-transform: rotate(360deg);transform: rotate(360deg);  }}</style><script>window.addEventListener('error', function () {  var e = document.getElementById('nuxt-loading');  if (e) e.className += ' error';});</script><div id="nuxt-loading" aria-live="polite" role="status"><div>Loading...</div></div></div>
-  <script type="text/javascript" src="/unide/files/14bc2d8913e01b8f6783.js"></script><script type="text/javascript" src="/unide/files/c01c4654e10f48ab3d43.js"></script><script type="text/javascript" src="/unide/files/8e06e143d95ab5687001.js"></script></body>
+  <script type="text/javascript" src="/unide/files/a195a9468a7b0964153f.js"></script><script type="text/javascript" src="/unide/files/c01c4654e10f48ab3d43.js"></script><script type="text/javascript" src="/unide/files/7267eda02aa7844877f4.js"></script></body>
 </html>
diff --git a/article/index.html b/article/index.html
index 939d208..2e5c386 100644
--- a/article/index.html
+++ b/article/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - </title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
+    <title data-n-head="true">Eclipse unide - </title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -17,15 +17,15 @@
     </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"><!----> <!----> <div class="content"><div></div></div> <div class="columns pageNav"><!----> <!----></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -68,6 +68,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{}}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/c3e469380ccd51a92bb6.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{}}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/2918aa6661dd624eef70.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2016/9/12/Unide-proposal-online/index.html b/blog/2016/9/12/Unide-proposal-online/index.html
index a2d0c26..880d282 100644
--- a/blog/2016/9/12/Unide-proposal-online/index.html
+++ b/blog/2016/9/12/Unide-proposal-online/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Unide proposal online</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
+    <title data-n-head="true">Eclipse unide - Unide proposal online</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -33,15 +33,15 @@
 </div></div> <div class="columns pageNav"><!----> <div class="column"><a href="/unide/blog/2016/9/16/Project-approved" class="button is-fullwidth"><span>Eclipse Project approved</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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -84,6 +84,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"Unide-proposal-online",content:'<p>We\'re happy to announce, that the proposal for our new Eclipse Project is online! You can find it at <a href="https://projects.eclipse.org/proposals/unide">https://projects.eclipse.org/proposals/unide</a>. For further discussions, there\'s the <a href="https://www.eclipse.org/forums/index.php/t/1080186/">forum post</a> as well.<br>\nNow, it\'s time to study all details about Eclipse processes and <a href="https://eclipse.org/legal/eplfaq.php#3RDPARTY">license regulations</a>.</p>\n<div class="card">\n\t<header class="card-header is-primary">\n\t\t<p class="card-header-title"><i class="fa fa-pencil">&nbsp;</i>Did you know?</p>\n\t</header>\n\t<div class="card-content">\n\t\t<div class="content">\n\t\t\tThe projects name is derived from <b>un</b>derstand <b>i</b>ndustry <b>de</b>vices. Other ideas like <b>co</b>nnect <b>i</b>ndustry <b>ma</b>chines turned out to have meanings in foreign languages or being trademarked already.\n\t\t</div>\n\t</div>\n</div>\n',url:"/blog/2016/9/12/Unide-proposal-online",title:"Unide proposal online",date:new Date(1473672397e3),tags:["project start"],next:{url:"/blog/2016/9/16/Project-approved",title:"Eclipse Project approved"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/c3e469380ccd51a92bb6.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"Unide-proposal-online",content:'<p>We\'re happy to announce, that the proposal for our new Eclipse Project is online! You can find it at <a href="https://projects.eclipse.org/proposals/unide">https://projects.eclipse.org/proposals/unide</a>. For further discussions, there\'s the <a href="https://www.eclipse.org/forums/index.php/t/1080186/">forum post</a> as well.<br>\nNow, it\'s time to study all details about Eclipse processes and <a href="https://eclipse.org/legal/eplfaq.php#3RDPARTY">license regulations</a>.</p>\n<div class="card">\n\t<header class="card-header is-primary">\n\t\t<p class="card-header-title"><i class="fa fa-pencil">&nbsp;</i>Did you know?</p>\n\t</header>\n\t<div class="card-content">\n\t\t<div class="content">\n\t\t\tThe projects name is derived from <b>un</b>derstand <b>i</b>ndustry <b>de</b>vices. Other ideas like <b>co</b>nnect <b>i</b>ndustry <b>ma</b>chines turned out to have meanings in foreign languages or being trademarked already.\n\t\t</div>\n\t</div>\n</div>\n',url:"/blog/2016/9/12/Unide-proposal-online",title:"Unide proposal online",date:new Date(1473672397e3),tags:["project start"],next:{url:"/blog/2016/9/16/Project-approved",title:"Eclipse Project approved"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/2918aa6661dd624eef70.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2016/9/12/index.html b/blog/2016/9/12/index.html
index c5a8379..f2ff84f 100644
--- a/blog/2016/9/12/index.html
+++ b/blog/2016/9/12/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - October 12, 2016</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - October 12, 2016</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -23,15 +23,15 @@
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2016/9/12/Unide-proposal-online",title:"Unide proposal online",date:new Date(1473672397e3)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2016/9/12/Unide-proposal-online",title:"Unide proposal online",date:new Date(1473672397e3)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2016/9/16/Project-approved/index.html b/blog/2016/9/16/Project-approved/index.html
index 83ab7d3..55ec390 100644
--- a/blog/2016/9/16/Project-approved/index.html
+++ b/blog/2016/9/16/Project-approved/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Eclipse Project approved</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
+    <title data-n-head="true">Eclipse unide - Eclipse Project approved</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -21,24 +21,24 @@
   </h2> <div class="content"><div><p>Unide proposal has been approved to be an Eclipse Project! You can now find all relevant information at <a href="https://projects.eclipse.org/projects/iot.unide">https://projects.eclipse.org/projects/iot.unide</a>.</p>
 <p>There's still some paperwork pending, but it looks promising! Next steps are</p>
 <ul>
-<li>creating a proper homepage with relevant information and the PPMP specification</li>
+<li>creating a proper homepage with relevant information and the Production Performance Management Protocol specification</li>
 <li>license checking of initial commitment code.</li>
 <li>getting in touch with Eclipse community</li>
 <li>making plans for the upcoming months</li>
 </ul>
-<p>If you are interested in industry 4.0, IoT stack in manufacturing or you are building industry machines and want to find out more about the possiblities with PPMP, let us know: <a href="mailto:unide-inbox@eclipse.org?subject=Interested%20in%20contributing">unide-inbox@eclipse.org</a></p>
+<p>If you are interested in industry 4.0, IoT stack in manufacturing or you are building industry machines and want to find out more about the possiblities with the Production Performance Management Protocol, let us know: <a href="mailto:unide-inbox@eclipse.org?subject=Interested%20in%20contributing">unide-inbox@eclipse.org</a></p>
 </div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2016/9/12/Unide-proposal-online" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>Unide proposal online</span></a></div> <div class="column"><a href="/unide/blog/2016/9/21/Official-launch" class="button is-fullwidth"><span>Official launch</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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -81,6 +81,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"Project-approved",content:'<p>Unide proposal has been approved to be an Eclipse Project! You can now find all relevant information at <a href="https://projects.eclipse.org/projects/iot.unide">https://projects.eclipse.org/projects/iot.unide</a>.</p>\n<p>There\'s still some paperwork pending, but it looks promising! Next steps are</p>\n<ul>\n<li>creating a proper homepage with relevant information and the PPMP specification</li>\n<li>license checking of initial commitment code.</li>\n<li>getting in touch with Eclipse community</li>\n<li>making plans for the upcoming months</li>\n</ul>\n<p>If you are interested in industry 4.0, IoT stack in manufacturing or you are building industry machines and want to find out more about the possiblities with PPMP, let us know: <a href="mailto:unide-inbox@eclipse.org?subject=Interested%20in%20contributing">unide-inbox@eclipse.org</a></p>\n',url:"/blog/2016/9/16/Project-approved",title:"Eclipse Project approved",date:new Date(1474028197e3),tags:["project start"],prev:{url:"/blog/2016/9/12/Unide-proposal-online",title:"Unide proposal online"},next:{url:"/blog/2016/9/21/Official-launch",title:"Official launch"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/c3e469380ccd51a92bb6.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"Project-approved",content:'<p>Unide proposal has been approved to be an Eclipse Project! You can now find all relevant information at <a href="https://projects.eclipse.org/projects/iot.unide">https://projects.eclipse.org/projects/iot.unide</a>.</p>\n<p>There\'s still some paperwork pending, but it looks promising! Next steps are</p>\n<ul>\n<li>creating a proper homepage with relevant information and the Production Performance Management Protocol specification</li>\n<li>license checking of initial commitment code.</li>\n<li>getting in touch with Eclipse community</li>\n<li>making plans for the upcoming months</li>\n</ul>\n<p>If you are interested in industry 4.0, IoT stack in manufacturing or you are building industry machines and want to find out more about the possiblities with the Production Performance Management Protocol, let us know: <a href="mailto:unide-inbox@eclipse.org?subject=Interested%20in%20contributing">unide-inbox@eclipse.org</a></p>\n',url:"/blog/2016/9/16/Project-approved",title:"Eclipse Project approved",date:new Date(1474028197e3),tags:["project start"],prev:{url:"/blog/2016/9/12/Unide-proposal-online",title:"Unide proposal online"},next:{url:"/blog/2016/9/21/Official-launch",title:"Official launch"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/2918aa6661dd624eef70.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2016/9/16/index.html b/blog/2016/9/16/index.html
index f356c17..e0198d8 100644
--- a/blog/2016/9/16/index.html
+++ b/blog/2016/9/16/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - October 16, 2016</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - October 16, 2016</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -23,15 +23,15 @@
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2016/9/16/Project-approved",title:"Eclipse Project approved",date:new Date(1474028197e3)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2016/9/16/Project-approved",title:"Eclipse Project approved",date:new Date(1474028197e3)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2016/9/21/Official-launch/index.html b/blog/2016/9/21/Official-launch/index.html
index 182db07..1cbf84c 100644
--- a/blog/2016/9/21/Official-launch/index.html
+++ b/blog/2016/9/21/Official-launch/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Official launch</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
+    <title data-n-head="true">Eclipse unide - Official launch</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -19,9 +19,9 @@
   </h1> <h2 class="subtitle is-6"><i class="fa fa-calendar"></i>  
     09/21/16, 11:47
   </h2> <div class="content"><div><p>Today, we officially launch Unide. In the last days, we have redesigned the logo, published Blog posts and started work on the initial (code) contributions.<br>
-It even seems like good timing, since there was a <a href="http://m.heise.de/newsticker/meldung/Umfrage-Unternehmen-fordern-offene-Plattform-fuer-die-Industrie-4-0-3327135.html">survey in Germany about open platforms & standards in industry 4.0</a>, basically asking for something like Unide/PPMP.</p>
+It even seems like good timing, since there was a <a href="http://m.heise.de/newsticker/meldung/Umfrage-Unternehmen-fordern-offene-Plattform-fuer-die-Industrie-4-0-3327135.html">survey in Germany about open platforms & standards in industry 4.0</a>, basically asking for something like Unide/the Production Performance Management Protocol.</p>
 <h3>the logo</h3>
-<p>Unide and PPMP's goal is to enable you to connect machines and receive their measurements / alerts. The logo represents that. It has you ("<em>U</em>") highlighted and connects to rings. As a side note, we found that the words almost look like <em>you-nice</em>.</p>
+<p>Unide and the Production Performance Management Protocol's goal is to enable you to connect machines and receive their measurements / alerts. The logo represents that. It has you ("<em>U</em>") highlighted and connects to rings. As a side note, we found that the words almost look like <em>you-nice</em>.</p>
 <h3>blog entries</h3>
 <p>If you are interested in further readings, check out the post at <a href="http://blog.bosch-si.com">blog.bosch-si.com</a>.</p>
 <h3>initial contributions</h3>
@@ -29,15 +29,15 @@
 </div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2016/9/16/Project-approved" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>Eclipse Project approved</span></a></div> <div class="column"><a href="/unide/blog/2016/9/27/News-coverage" class="button is-fullwidth"><span>News Coverage</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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -80,6 +80,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"Official-launch",content:'<p>Today, we officially launch Unide. In the last days, we have redesigned the logo, published Blog posts and started work on the initial (code) contributions.<br>\nIt even seems like good timing, since there was a <a href="http://m.heise.de/newsticker/meldung/Umfrage-Unternehmen-fordern-offene-Plattform-fuer-die-Industrie-4-0-3327135.html">survey in Germany about open platforms &amp; standards in industry 4.0</a>, basically asking for something like Unide/PPMP.</p>\n<h3>the logo</h3>\n<p>Unide and PPMP\'s goal is to enable you to connect machines and receive their measurements / alerts. The logo represents that. It has you (&quot;<em>U</em>&quot;) highlighted and connects to rings. As a side note, we found that the words almost look like <em>you-nice</em>.</p>\n<h3>blog entries</h3>\n<p>If you are interested in further readings, check out the post at <a href="http://blog.bosch-si.com">blog.bosch-si.com</a>.</p>\n<h3>initial contributions</h3>\n<p>We are working on creating the initial contributions for Unide. Since there are a few legal aspects we have to consider, stay tuned. The code will be published to our <a href="https://github.com/eclipse/unide">github repository</a>.</p>\n',url:"/blog/2016/9/21/Official-launch",title:"Official launch",date:new Date(1474451263e3),tags:["project start"],prev:{url:"/blog/2016/9/16/Project-approved",title:"Eclipse Project approved"},next:{url:"/blog/2016/9/27/News-coverage",title:"News Coverage"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/c3e469380ccd51a92bb6.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"Official-launch",content:'<p>Today, we officially launch Unide. In the last days, we have redesigned the logo, published Blog posts and started work on the initial (code) contributions.<br>\nIt even seems like good timing, since there was a <a href="http://m.heise.de/newsticker/meldung/Umfrage-Unternehmen-fordern-offene-Plattform-fuer-die-Industrie-4-0-3327135.html">survey in Germany about open platforms &amp; standards in industry 4.0</a>, basically asking for something like Unide/the Production Performance Management Protocol.</p>\n<h3>the logo</h3>\n<p>Unide and the Production Performance Management Protocol\'s goal is to enable you to connect machines and receive their measurements / alerts. The logo represents that. It has you (&quot;<em>U</em>&quot;) highlighted and connects to rings. As a side note, we found that the words almost look like <em>you-nice</em>.</p>\n<h3>blog entries</h3>\n<p>If you are interested in further readings, check out the post at <a href="http://blog.bosch-si.com">blog.bosch-si.com</a>.</p>\n<h3>initial contributions</h3>\n<p>We are working on creating the initial contributions for Unide. Since there are a few legal aspects we have to consider, stay tuned. The code will be published to our <a href="https://github.com/eclipse/unide">github repository</a>.</p>\n',url:"/blog/2016/9/21/Official-launch",title:"Official launch",date:new Date(1474451263e3),tags:["project start"],prev:{url:"/blog/2016/9/16/Project-approved",title:"Eclipse Project approved"},next:{url:"/blog/2016/9/27/News-coverage",title:"News Coverage"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/2918aa6661dd624eef70.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2016/9/21/index.html b/blog/2016/9/21/index.html
index 01c3708..419af10 100644
--- a/blog/2016/9/21/index.html
+++ b/blog/2016/9/21/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - October 21, 2016</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - October 21, 2016</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -23,15 +23,15 @@
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2016/9/21/Official-launch",title:"Official launch",date:new Date(1474451263e3)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2016/9/21/Official-launch",title:"Official launch",date:new Date(1474451263e3)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2016/9/27/News-coverage/index.html b/blog/2016/9/27/News-coverage/index.html
index b06b985..57ac2cc 100644
--- a/blog/2016/9/27/News-coverage/index.html
+++ b/blog/2016/9/27/News-coverage/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - News Coverage</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
+    <title data-n-head="true">Eclipse unide - News Coverage</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -18,8 +18,8 @@
     News Coverage
   </h1> <h2 class="subtitle is-6"><i class="fa fa-calendar"></i>  
     09/27/16, 11:14
-  </h2> <div class="content"><div><p>After the <a href="/unide/2016/09/21/Official%20launch/">Official launch</a> of unide and PPMP, there was some media coverage about the project.</p>
-<p>Triggered by a statement by <a href="http://www.bosch.com/en/com/bosch_group/board_management/dr_rer_nat_volkmar_denner/volkmar-denner.html">Bosch CEO Volkmar Denner</a> on <em><a href="http://www.bosch-presse.de/pressportal/en/bosch-initiates-new-machine-language-for-industry-4-0-65216.html">"initiating new machine language for Industry 4.0"</a></em>, twitter, blogs and magazines mention PPMP, e.g.:</p>
+  </h2> <div class="content"><div><p>After the <a href="/unide/2016/09/21/Official%20launch/">Official launch</a> of unide and the Production Performance Management Protocol, there was some media coverage about the project.</p>
+<p>Triggered by a statement by <a href="http://www.bosch.com/en/com/bosch_group/board_management/dr_rer_nat_volkmar_denner/volkmar-denner.html">Bosch CEO Volkmar Denner</a> on <em><a href="http://www.bosch-presse.de/pressportal/en/bosch-initiates-new-machine-language-for-industry-4-0-65216.html">"initiating new machine language for Industry 4.0"</a></em>, twitter, blogs and magazines mention Production Performance Management Protocol, e.g.:</p>
 <ul>
 <li><a href="https://www.elektormagazine.com/news/free-ppmp-from-bosch-makes-industry-4-0-open-for-all">electormagazine</a></li>
 <li><a href="http://www.computer-automation.de/feldebene/vernetzung/artikel/134233/">computer-automation</a> (de)</li>
@@ -28,15 +28,15 @@
 </div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2016/9/21/Official-launch" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>Official launch</span></a></div> <div class="column"><a href="/unide/blog/2017/3/23/Unide-at-BCX" class="button is-fullwidth"><span>Unide at Bosch Hackaton</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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -79,6 +79,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"News-coverage",content:'<p>After the <a href="/unide/2016/09/21/Official%20launch/">Official launch</a> of unide and PPMP, there was some media coverage about the project.</p>\n<p>Triggered by a statement by <a href="http://www.bosch.com/en/com/bosch_group/board_management/dr_rer_nat_volkmar_denner/volkmar-denner.html">Bosch CEO Volkmar Denner</a> on <em><a href="http://www.bosch-presse.de/pressportal/en/bosch-initiates-new-machine-language-for-industry-4-0-65216.html">&quot;initiating new machine language for Industry 4.0&quot;</a></em>, twitter, blogs and magazines mention PPMP, e.g.:</p>\n<ul>\n<li><a href="https://www.elektormagazine.com/news/free-ppmp-from-bosch-makes-industry-4-0-open-for-all">electormagazine</a></li>\n<li><a href="http://www.computer-automation.de/feldebene/vernetzung/artikel/134233/">computer-automation</a> (de)</li>\n</ul>\n<p>Looking forward to spreading the word further.</p>\n',url:"/blog/2016/9/27/News-coverage",title:"News Coverage",date:new Date(1474967667e3),tags:["media"],prev:{url:"/blog/2016/9/21/Official-launch",title:"Official launch"},next:{url:"/blog/2017/3/23/Unide-at-BCX",title:"Unide at Bosch Hackaton"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/c3e469380ccd51a92bb6.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"News-coverage",content:'<p>After the <a href="/unide/2016/09/21/Official%20launch/">Official launch</a> of unide and the Production Performance Management Protocol, there was some media coverage about the project.</p>\n<p>Triggered by a statement by <a href="http://www.bosch.com/en/com/bosch_group/board_management/dr_rer_nat_volkmar_denner/volkmar-denner.html">Bosch CEO Volkmar Denner</a> on <em><a href="http://www.bosch-presse.de/pressportal/en/bosch-initiates-new-machine-language-for-industry-4-0-65216.html">&quot;initiating new machine language for Industry 4.0&quot;</a></em>, twitter, blogs and magazines mention Production Performance Management Protocol, e.g.:</p>\n<ul>\n<li><a href="https://www.elektormagazine.com/news/free-ppmp-from-bosch-makes-industry-4-0-open-for-all">electormagazine</a></li>\n<li><a href="http://www.computer-automation.de/feldebene/vernetzung/artikel/134233/">computer-automation</a> (de)</li>\n</ul>\n<p>Looking forward to spreading the word further.</p>\n',url:"/blog/2016/9/27/News-coverage",title:"News Coverage",date:new Date(1474967667e3),tags:["media"],prev:{url:"/blog/2016/9/21/Official-launch",title:"Official launch"},next:{url:"/blog/2017/3/23/Unide-at-BCX",title:"Unide at Bosch Hackaton"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/2918aa6661dd624eef70.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2016/9/27/index.html b/blog/2016/9/27/index.html
index 5a239eb..e1a46ce 100644
--- a/blog/2016/9/27/index.html
+++ b/blog/2016/9/27/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - October 27, 2016</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - October 27, 2016</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -23,15 +23,15 @@
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2016/9/27/News-coverage",title:"News Coverage",date:new Date(1474967667e3)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2016/9/27/News-coverage",title:"News Coverage",date:new Date(1474967667e3)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2016/9/index.html b/blog/2016/9/index.html
index 03fe1bd..7067cc1 100644
--- a/blog/2016/9/index.html
+++ b/blog/2016/9/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - October 2016</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - October 2016</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -35,15 +35,15 @@
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -86,6 +86,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2016/9/27/News-coverage",title:"News Coverage",date:new Date(1474967667e3)},{url:"/blog/2016/9/21/Official-launch",title:"Official launch",date:new Date(1474451263e3)},{url:"/blog/2016/9/16/Project-approved",title:"Eclipse Project approved",date:new Date(1474028197e3)},{url:"/blog/2016/9/12/Unide-proposal-online",title:"Unide proposal online",date:new Date(1473672397e3)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2016/9/27/News-coverage",title:"News Coverage",date:new Date(1474967667e3)},{url:"/blog/2016/9/21/Official-launch",title:"Official launch",date:new Date(1474451263e3)},{url:"/blog/2016/9/16/Project-approved",title:"Eclipse Project approved",date:new Date(1474028197e3)},{url:"/blog/2016/9/12/Unide-proposal-online",title:"Unide proposal online",date:new Date(1473672397e3)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2016/index.html b/blog/2016/index.html
index 1dd6152..672eca1 100644
--- a/blog/2016/index.html
+++ b/blog/2016/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - 2016</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - 2016</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -35,15 +35,15 @@
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -86,6 +86,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2016/9/27/News-coverage",title:"News Coverage",date:new Date(1474967667e3)},{url:"/blog/2016/9/21/Official-launch",title:"Official launch",date:new Date(1474451263e3)},{url:"/blog/2016/9/16/Project-approved",title:"Eclipse Project approved",date:new Date(1474028197e3)},{url:"/blog/2016/9/12/Unide-proposal-online",title:"Unide proposal online",date:new Date(1473672397e3)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2016/9/27/News-coverage",title:"News Coverage",date:new Date(1474967667e3)},{url:"/blog/2016/9/21/Official-launch",title:"Official launch",date:new Date(1474451263e3)},{url:"/blog/2016/9/16/Project-approved",title:"Eclipse Project approved",date:new Date(1474028197e3)},{url:"/blog/2016/9/12/Unide-proposal-online",title:"Unide proposal online",date:new Date(1473672397e3)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2017/10/19/i40-testbed-started/index.html b/blog/2017/10/19/i40-testbed-started/index.html
index 6deac5b..625fc66 100644
--- a/blog/2017/10/19/i40-testbed-started/index.html
+++ b/blog/2017/10/19/i40-testbed-started/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Unide is part of Industry 4.0 Testbed</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
+    <title data-n-head="true">Eclipse unide - Unide is part of Industry 4.0 Testbed</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -19,20 +19,20 @@
   </h1> <h2 class="subtitle is-6"><i class="fa fa-calendar"></i>  
     10/19/17
   </h2> <div class="content"><div><p>The Eclipse IoT Working group has started another testbed around Production Performance Management. Together with other Eclipse projects but also manufacturing companies, we aim to showcase and test the software in real life scenarios.<br>
-<a href="https://www.contact-software.com">Contact Software</a>, <a href="https://www.eurotech.com">Eurotech</a> and <a href="https://www.eclipse.org/4diac/">Eclipse 4diac</a> provide bindings to actual machines, Unide and PPMP will be used for structuring and normalizing the information, <a href="https://projects.eclipse.org/projects/iot.hono">Ecipse Hono</a> and other provide the advanced infrastructure and <a href="https://www.influxdata.com/">influx data</a> persists the data.<br>
+<a href="https://www.contact-software.com">Contact Software</a>, <a href="https://www.eurotech.com">Eurotech</a> and <a href="https://www.eclipse.org/4diac/">Eclipse 4diac</a> provide bindings to actual machines, Unide and the Production Performance Management Protocol will be used for structuring and normalizing the information, <a href="https://projects.eclipse.org/projects/iot.hono">Ecipse Hono</a> and other provide the advanced infrastructure and <a href="https://www.influxdata.com/">influx data</a> persists the data.<br>
 You can find more information in the <a href="https://eclipse.org/org/press-release/20171019_industry40_testbed.php">Press Release</a> or the <a href="https://iot.eclipse.org/testbeds/production-performance-management/#">homepage of the testbed</a>.</p>
 </div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2017/10/6/DZone-article-published" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>DZone article published</span></a></div> <div class="column"><a href="/unide/blog/2018/1/26/New-website" class="button is-fullwidth"><span>Updated Website</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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -75,6 +75,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"i40-testbed-started",content:'<p>The Eclipse IoT Working group has started another testbed around Production Performance Management. Together with other Eclipse projects but also manufacturing companies, we aim to showcase and test the software in real life scenarios.<br>\n<a href="https://www.contact-software.com">Contact Software</a>, <a href="https://www.eurotech.com">Eurotech</a> and <a href="https://www.eclipse.org/4diac/">Eclipse 4diac</a> provide bindings to actual machines, Unide and PPMP will be used for structuring and normalizing the information, <a href="https://projects.eclipse.org/projects/iot.hono">Ecipse Hono</a> and other provide the advanced infrastructure and <a href="https://www.influxdata.com/">influx data</a> persists the data.<br>\nYou can find more information in the <a href="https://eclipse.org/org/press-release/20171019_industry40_testbed.php">Press Release</a> or the <a href="https://iot.eclipse.org/testbeds/production-performance-management/#">homepage of the testbed</a>.</p>\n',url:"/blog/2017/10/19/i40-testbed-started",title:"Unide is part of Industry 4.0 Testbed",date:new Date(15083712e5),tags:["testbed"],prev:{url:"/blog/2017/10/6/DZone-article-published",title:"DZone article published"},next:{url:"/blog/2018/1/26/New-website",title:"Updated Website"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/c3e469380ccd51a92bb6.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"i40-testbed-started",content:'<p>The Eclipse IoT Working group has started another testbed around Production Performance Management. Together with other Eclipse projects but also manufacturing companies, we aim to showcase and test the software in real life scenarios.<br>\n<a href="https://www.contact-software.com">Contact Software</a>, <a href="https://www.eurotech.com">Eurotech</a> and <a href="https://www.eclipse.org/4diac/">Eclipse 4diac</a> provide bindings to actual machines, Unide and the Production Performance Management Protocol will be used for structuring and normalizing the information, <a href="https://projects.eclipse.org/projects/iot.hono">Ecipse Hono</a> and other provide the advanced infrastructure and <a href="https://www.influxdata.com/">influx data</a> persists the data.<br>\nYou can find more information in the <a href="https://eclipse.org/org/press-release/20171019_industry40_testbed.php">Press Release</a> or the <a href="https://iot.eclipse.org/testbeds/production-performance-management/#">homepage of the testbed</a>.</p>\n',url:"/blog/2017/10/19/i40-testbed-started",title:"Unide is part of Industry 4.0 Testbed",date:new Date(15083712e5),tags:["testbed"],prev:{url:"/blog/2017/10/6/DZone-article-published",title:"DZone article published"},next:{url:"/blog/2018/1/26/New-website",title:"Updated Website"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/2918aa6661dd624eef70.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2017/10/19/index.html b/blog/2017/10/19/index.html
index 8ab918e..1d5c5fe 100644
--- a/blog/2017/10/19/index.html
+++ b/blog/2017/10/19/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - November 19, 2017</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - November 19, 2017</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -23,15 +23,15 @@
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2017/10/19/i40-testbed-started",title:"Unide is part of Industry 4.0 Testbed",date:new Date(15083712e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2017/10/19/i40-testbed-started",title:"Unide is part of Industry 4.0 Testbed",date:new Date(15083712e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2017/10/6/DZone-article-published/index.html b/blog/2017/10/6/DZone-article-published/index.html
index 4273488..3a036d8 100644
--- a/blog/2017/10/6/DZone-article-published/index.html
+++ b/blog/2017/10/6/DZone-article-published/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - DZone article published</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
+    <title data-n-head="true">Eclipse unide - DZone article published</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -18,20 +18,20 @@
     DZone article published
   </h1> <h2 class="subtitle is-6"><i class="fa fa-calendar"></i>  
     10/06/17
-  </h2> <div class="content"><div><p>A new article about PPMP and the Eclipse Unide project was published at <a href="https://dzone.com/articles/eclipse-unide-a-way-to-establish-an-open-industry">DZone</a>!<br>
-It explains how to use the <a href="https://www.eclipse.org/unide/2017/06/29/Validator-Online/">PPMP validator</a>, gives an overview of the InfluxDB / Grafana visualisation and how this setup can be used in an Eclipse Testbed.</p>
-</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2017/6/29/Validator-Online" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>First PPMP-Validator Online</span></a></div> <div class="column"><a href="/unide/blog/2017/10/19/i40-testbed-started" class="button is-fullwidth"><span>Unide is part of Industry 4.0 Testbed</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">
+  </h2> <div class="content"><div><p>A new article about the Production Performance Management Protocol and the Eclipse Unide project was published at <a href="https://dzone.com/articles/eclipse-unide-a-way-to-establish-an-open-industry">DZone</a>!<br>
+It explains how to use the <a href="https://www.eclipse.org/unide/2017/06/29/Validator-Online/">the Production Performance Management Protocol validator</a>, gives an overview of the InfluxDB / Grafana visualisation and how this setup can be used in an Eclipse Testbed.</p>
+</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2017/6/29/Validator-Online" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>First Production Performance Management Protocol-Validator Online</span></a></div> <div class="column"><a href="/unide/blog/2017/10/19/i40-testbed-started" class="button is-fullwidth"><span>Unide is part of Industry 4.0 Testbed</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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"DZone-article-published",content:'<p>A new article about PPMP and the Eclipse Unide project was published at <a href="https://dzone.com/articles/eclipse-unide-a-way-to-establish-an-open-industry">DZone</a>!<br>\nIt explains how to use the <a href="https://www.eclipse.org/unide/2017/06/29/Validator-Online/">PPMP validator</a>, gives an overview of the InfluxDB / Grafana visualisation and how this setup can be used in an Eclipse Testbed.</p>\n',url:"/blog/2017/10/6/DZone-article-published",title:"DZone article published",date:new Date(1507248e6),tags:["media"],prev:{url:"/blog/2017/6/29/Validator-Online",title:"First PPMP-Validator Online"},next:{url:"/blog/2017/10/19/i40-testbed-started",title:"Unide is part of Industry 4.0 Testbed"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/c3e469380ccd51a92bb6.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"DZone-article-published",content:'<p>A new article about the Production Performance Management Protocol and the Eclipse Unide project was published at <a href="https://dzone.com/articles/eclipse-unide-a-way-to-establish-an-open-industry">DZone</a>!<br>\nIt explains how to use the <a href="https://www.eclipse.org/unide/2017/06/29/Validator-Online/">the Production Performance Management Protocol validator</a>, gives an overview of the InfluxDB / Grafana visualisation and how this setup can be used in an Eclipse Testbed.</p>\n',url:"/blog/2017/10/6/DZone-article-published",title:"DZone article published",date:new Date(1507248e6),tags:["media"],prev:{url:"/blog/2017/6/29/Validator-Online",title:"First Production Performance Management Protocol-Validator Online"},next:{url:"/blog/2017/10/19/i40-testbed-started",title:"Unide is part of Industry 4.0 Testbed"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/2918aa6661dd624eef70.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2017/10/6/index.html b/blog/2017/10/6/index.html
index c5d3cf5..2e292a3 100644
--- a/blog/2017/10/6/index.html
+++ b/blog/2017/10/6/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - November 06, 2017</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - November 06, 2017</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -23,15 +23,15 @@
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2017/10/6/DZone-article-published",title:"DZone article published",date:new Date(1507248e6)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2017/10/6/DZone-article-published",title:"DZone article published",date:new Date(1507248e6)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2017/10/index.html b/blog/2017/10/index.html
index c22fc35..01c95ec 100644
--- a/blog/2017/10/index.html
+++ b/blog/2017/10/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - November 2017</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - November 2017</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -27,15 +27,15 @@
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -78,6 +78,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2017/10/19/i40-testbed-started",title:"Unide is part of Industry 4.0 Testbed",date:new Date(15083712e5)},{url:"/blog/2017/10/6/DZone-article-published",title:"DZone article published",date:new Date(1507248e6)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2017/10/19/i40-testbed-started",title:"Unide is part of Industry 4.0 Testbed",date:new Date(15083712e5)},{url:"/blog/2017/10/6/DZone-article-published",title:"DZone article published",date:new Date(1507248e6)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2017/3/23/Unide-at-BCX/index.html b/blog/2017/3/23/Unide-at-BCX/index.html
index a7f365f..e825880 100644
--- a/blog/2017/3/23/Unide-at-BCX/index.html
+++ b/blog/2017/3/23/Unide-at-BCX/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Unide at Bosch Hackaton</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
+    <title data-n-head="true">Eclipse unide - Unide at Bosch Hackaton</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -18,28 +18,28 @@
     Unide at Bosch Hackaton
   </h1> <h2 class="subtitle is-6"><i class="fa fa-calendar"></i>  
     03/23/17
-  </h2> <div class="content"><div><p>Unide and PPMP were used in <a href="http://bcw.bosch-si.com/berlin/bcw-hackathon/?refresh=1">Bosch Connected Experience Hackaton</a> by students and developers to connect sensors to backend solutions in just two days!<br>
+  </h2> <div class="content"><div><p>Unide and the Production Performance Management Protocol were used in <a href="http://bcw.bosch-si.com/berlin/bcw-hackathon/?refresh=1">Bosch Connected Experience Hackaton</a> by students and developers to connect sensors to backend solutions in just two days!<br>
 They even took a professional video:</p>
 <center>
 <iframe width="400" height="300" src="https://www.youtube.com/embed/Pq88mIx-lnQ?ecver=1" frameborder="0" allowfullscreen></iframe>
 </center>
-<p>Also in the same conference, Bosch CEO Dr. Volkmar Denner <a href="http://bcw.bosch-si.com/berlin/bcw-hackathon/?refresh=1">refered to PPMP again</a>:</p>
+<p>Also in the same conference, Bosch CEO Dr. Volkmar Denner <a href="http://bcw.bosch-si.com/berlin/bcw-hackathon/?refresh=1">refered to the Production Performance Management Protocol again</a>:</p>
 <blockquote>
-	<p>On a more practical level, the product performance management protocol, or PPMP, is being tried out at the Bosch plant in Homburg, Germany, as part of a joint Industrie 4.0 and IIC testbed. Bosch itself developed the PPMP, which is available to all at no cost. It allows small and medium-sized enterprises to transmit data from their sensors quickly, simply, and securely to the production systems of large companies. This helps remove some of the obstacles preventing entry into connected manufacturing. This first practical experience will be used to further refine the new protocol – work which will be done by Eclipse, an open-source community. Once again, we see that openness is our life blood.</p>
+	<p>On a more practical level, the Product Performance Management Protocol, or PPMP, is being tried out at the Bosch plant in Homburg, Germany, as part of a joint Industrie 4.0 and IIC testbed. Bosch itself developed the Production Performance Management Protocol, which is available to all at no cost. It allows small and medium-sized enterprises to transmit data from their sensors quickly, simply, and securely to the production systems of large companies. This helps remove some of the obstacles preventing entry into connected manufacturing. This first practical experience will be used to further refine the new protocol – work which will be done by Eclipse, an open-source community. Once again, we see that openness is our life blood.</p>
 	<footer>Dr. Volkmar Denner, Bosch CEO</footer>
 </blockquote>
-</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2016/9/27/News-coverage" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>News Coverage</span></a></div> <div class="column"><a href="/unide/blog/2017/6/1/New-process-message-spec" class="button is-fullwidth"><span>New PPMP-Specification for processes</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">
+</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2016/9/27/News-coverage" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>News Coverage</span></a></div> <div class="column"><a href="/unide/blog/2017/6/1/New-process-message-spec" class="button is-fullwidth"><span>New Production Performance Management Protocol-Specification for processes</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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -82,6 +82,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"Unide-at-BCX",content:'<p>Unide and PPMP were used in <a href="http://bcw.bosch-si.com/berlin/bcw-hackathon/?refresh=1">Bosch Connected Experience Hackaton</a> by students and developers to connect sensors to backend solutions in just two days!<br>\nThey even took a professional video:</p>\n<center>\n<iframe width="400" height="300" src="https://www.youtube.com/embed/Pq88mIx-lnQ?ecver=1" frameborder="0" allowfullscreen></iframe>\n</center>\n<p>Also in the same conference, Bosch CEO Dr. Volkmar Denner <a href="http://bcw.bosch-si.com/berlin/bcw-hackathon/?refresh=1">refered to PPMP again</a>:</p>\n<blockquote>\n\t<p>On a more practical level, the product performance management protocol, or PPMP, is being tried out at the Bosch plant in Homburg, Germany, as part of a joint Industrie 4.0 and IIC testbed. Bosch itself developed the PPMP, which is available to all at no cost. It allows small and medium-sized enterprises to transmit data from their sensors quickly, simply, and securely to the production systems of large companies. This helps remove some of the obstacles preventing entry into connected manufacturing. This first practical experience will be used to further refine the new protocol – work which will be done by Eclipse, an open-source community. Once again, we see that openness is our life blood.</p>\n\t<footer>Dr. Volkmar Denner, Bosch CEO</footer>\n</blockquote>\n',url:"/blog/2017/3/23/Unide-at-BCX",title:"Unide at Bosch Hackaton",date:new Date(14902884e5),tags:["media"],prev:{url:"/blog/2016/9/27/News-coverage",title:"News Coverage"},next:{url:"/blog/2017/6/1/New-process-message-spec",title:"New PPMP-Specification for processes"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/c3e469380ccd51a92bb6.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"Unide-at-BCX",content:'<p>Unide and the Production Performance Management Protocol were used in <a href="http://bcw.bosch-si.com/berlin/bcw-hackathon/?refresh=1">Bosch Connected Experience Hackaton</a> by students and developers to connect sensors to backend solutions in just two days!<br>\nThey even took a professional video:</p>\n<center>\n<iframe width="400" height="300" src="https://www.youtube.com/embed/Pq88mIx-lnQ?ecver=1" frameborder="0" allowfullscreen></iframe>\n</center>\n<p>Also in the same conference, Bosch CEO Dr. Volkmar Denner <a href="http://bcw.bosch-si.com/berlin/bcw-hackathon/?refresh=1">refered to the Production Performance Management Protocol again</a>:</p>\n<blockquote>\n\t<p>On a more practical level, the Product Performance Management Protocol, or PPMP, is being tried out at the Bosch plant in Homburg, Germany, as part of a joint Industrie 4.0 and IIC testbed. Bosch itself developed the Production Performance Management Protocol, which is available to all at no cost. It allows small and medium-sized enterprises to transmit data from their sensors quickly, simply, and securely to the production systems of large companies. This helps remove some of the obstacles preventing entry into connected manufacturing. This first practical experience will be used to further refine the new protocol – work which will be done by Eclipse, an open-source community. Once again, we see that openness is our life blood.</p>\n\t<footer>Dr. Volkmar Denner, Bosch CEO</footer>\n</blockquote>\n',url:"/blog/2017/3/23/Unide-at-BCX",title:"Unide at Bosch Hackaton",date:new Date(14902884e5),tags:["media"],prev:{url:"/blog/2016/9/27/News-coverage",title:"News Coverage"},next:{url:"/blog/2017/6/1/New-process-message-spec",title:"New Production Performance Management Protocol-Specification for processes"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/2918aa6661dd624eef70.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2017/3/23/index.html b/blog/2017/3/23/index.html
index 41a96c4..992edbe 100644
--- a/blog/2017/3/23/index.html
+++ b/blog/2017/3/23/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - April 23, 2017</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - April 23, 2017</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -23,15 +23,15 @@
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2017/3/23/Unide-at-BCX",title:"Unide at Bosch Hackaton",date:new Date(14902884e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2017/3/23/Unide-at-BCX",title:"Unide at Bosch Hackaton",date:new Date(14902884e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2017/3/index.html b/blog/2017/3/index.html
index 1668a74..59ff98d 100644
--- a/blog/2017/3/index.html
+++ b/blog/2017/3/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - April 2017</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - April 2017</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -23,15 +23,15 @@
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2017/3/23/Unide-at-BCX",title:"Unide at Bosch Hackaton",date:new Date(14902884e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2017/3/23/Unide-at-BCX",title:"Unide at Bosch Hackaton",date:new Date(14902884e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2017/6/1/New-process-message-spec/index.html b/blog/2017/6/1/New-process-message-spec/index.html
index 4b91d0e..c4d88e6 100644
--- a/blog/2017/6/1/New-process-message-spec/index.html
+++ b/blog/2017/6/1/New-process-message-spec/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - New PPMP-Specification for processes</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
+    <title data-n-head="true">Eclipse unide - New Production Performance Management Protocol-Specification for processes</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -15,22 +15,22 @@
     </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">
-    New PPMP-Specification for processes
+    New Production Performance Management Protocol-Specification for processes
   </h1> <h2 class="subtitle is-6"><i class="fa fa-calendar"></i>  
     06/01/17
   </h2> <div class="content"><div><p>We’re happy to announce, that the process message specification is online! You can find it at <a href="http://www.eclipse.org/unide/specification">http://www.eclipse.org/unide/specification</a>. With this type of messages you have a standard format for sending data out of discrete and possibly complex processes. <img src="/unide/images/processPayload.png" alt="alt text"></p>
-</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2017/3/23/Unide-at-BCX" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>Unide at Bosch Hackaton</span></a></div> <div class="column"><a href="/unide/blog/2017/6/29/Validator-Online" class="button is-fullwidth"><span>First PPMP-Validator Online</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">
+</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2017/3/23/Unide-at-BCX" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>Unide at Bosch Hackaton</span></a></div> <div class="column"><a href="/unide/blog/2017/6/29/Validator-Online" class="button is-fullwidth"><span>First Production Performance Management Protocol-Validator Online</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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -73,6 +73,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"New-process-message-spec",content:'<p>We’re happy to announce, that the process message specification is online! You can find it at <a href="http://www.eclipse.org/unide/specification">http://www.eclipse.org/unide/specification</a>. With this type of messages you have a standard format for sending data out of discrete and possibly complex processes. <img src="/unide/images/processPayload.png" alt="alt text"></p>\n',url:"/blog/2017/6/1/New-process-message-spec",title:"New PPMP-Specification for processes",date:new Date(14962752e5),tags:["process message"],prev:{url:"/blog/2017/3/23/Unide-at-BCX",title:"Unide at Bosch Hackaton"},next:{url:"/blog/2017/6/29/Validator-Online",title:"First PPMP-Validator Online"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/c3e469380ccd51a92bb6.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"New-process-message-spec",content:'<p>We’re happy to announce, that the process message specification is online! You can find it at <a href="http://www.eclipse.org/unide/specification">http://www.eclipse.org/unide/specification</a>. With this type of messages you have a standard format for sending data out of discrete and possibly complex processes. <img src="/unide/images/processPayload.png" alt="alt text"></p>\n',url:"/blog/2017/6/1/New-process-message-spec",title:"New Production Performance Management Protocol-Specification for processes",date:new Date(14962752e5),tags:["process message"],prev:{url:"/blog/2017/3/23/Unide-at-BCX",title:"Unide at Bosch Hackaton"},next:{url:"/blog/2017/6/29/Validator-Online",title:"First Production Performance Management Protocol-Validator Online"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/2918aa6661dd624eef70.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2017/6/1/index.html b/blog/2017/6/1/index.html
index 0f7bd8e..ffdf030 100644
--- a/blog/2017/6/1/index.html
+++ b/blog/2017/6/1/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - July 01, 2017</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - July 01, 2017</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -17,21 +17,21 @@
     </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="blog column is-8"><h1 class="title is-3">
     July 01, 2017
   </h1> <ul><li><h2 class="title is-4"><a href="/unide/blog/2017/6/1/New-process-message-spec">
-          New PPMP-Specification for processes
+          New Production Performance Management Protocol-Specification for processes
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2017/6/1/New-process-message-spec"><i class="fa fa-calendar"></i>  
           01
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2017/6/1/New-process-message-spec",title:"New PPMP-Specification for processes",date:new Date(14962752e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2017/6/1/New-process-message-spec",title:"New Production Performance Management Protocol-Specification for processes",date:new Date(14962752e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2017/6/29/Validator-Online/index.html b/blog/2017/6/29/Validator-Online/index.html
index a769d1f..616c8be 100644
--- a/blog/2017/6/29/Validator-Online/index.html
+++ b/blog/2017/6/29/Validator-Online/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - First PPMP-Validator Online</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
+    <title data-n-head="true">Eclipse unide - First Production Performance Management Protocol-Validator Online</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -15,30 +15,30 @@
     </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">
-    First PPMP-Validator Online
+    First Production Performance Management Protocol-Validator Online
   </h1> <h2 class="subtitle is-6"><i class="fa fa-calendar"></i>  
     06/29/17
-  </h2> <div class="content"><div><p>Our first PPMP-Validator as a HTTP-server is online!</p>
-<p>What we already contribtuted as sourcecode to the Unide-project we've also installed on an eclipse sandbox server. Now you are able to validate your PPMP-messages through the internet without running the server on your local machine. The intention is to make the latest specification validator accessible to everyone at anytime.</p>
+  </h2> <div class="content"><div><p>Our first Production Performance Management Protocol-Validator as a HTTP-server is online!</p>
+<p>What we already contribtuted as sourcecode to the Unide-project we've also installed on an eclipse sandbox server. Now you are able to validate your Production Performance Management Protocol-messages through the internet without running the server on your local machine. The intention is to make the latest specification validator accessible to everyone at anytime.</p>
 <p>You can reach the server by sending POST-requests to the following endpoints:</p>
 <pre>
 <a>http://unide.eclipse.org/rest/v2/message?validate=true</a>
 <a>http://unide.eclipse.org/rest/v2/measurement?validate=true</a>
 <a>http://unide.eclipse.org/rest/v2/process?validate=true</a>
 </pre>
-<p>Further functions of the sandbox server will be also visualization and storaging of incoming PPMP-messages.</p>
-</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2017/6/1/New-process-message-spec" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>New PPMP-Specification for processes</span></a></div> <div class="column"><a href="/unide/blog/2017/10/6/DZone-article-published" class="button is-fullwidth"><span>DZone article published</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">
+<p>Further functions of the sandbox server will be also visualization and storaging of incoming Production Performance Management Protocol-messages.</p>
+</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2017/6/1/New-process-message-spec" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>New Production Performance Management Protocol-Specification for processes</span></a></div> <div class="column"><a href="/unide/blog/2017/10/6/DZone-article-published" class="button is-fullwidth"><span>DZone article published</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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -81,6 +81,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"Validator-Online",content:"<p>Our first PPMP-Validator as a HTTP-server is online!</p>\n<p>What we already contribtuted as sourcecode to the Unide-project we've also installed on an eclipse sandbox server. Now you are able to validate your PPMP-messages through the internet without running the server on your local machine. The intention is to make the latest specification validator accessible to everyone at anytime.</p>\n<p>You can reach the server by sending POST-requests to the following endpoints:</p>\n<pre>\n<a>http://unide.eclipse.org/rest/v2/message?validate=true</a>\n<a>http://unide.eclipse.org/rest/v2/measurement?validate=true</a>\n<a>http://unide.eclipse.org/rest/v2/process?validate=true</a>\n</pre>\n<p>Further functions of the sandbox server will be also visualization and storaging of incoming PPMP-messages.</p>\n",url:"/blog/2017/6/29/Validator-Online",title:"First PPMP-Validator Online",date:new Date(14986944e5),tags:["validator"],prev:{url:"/blog/2017/6/1/New-process-message-spec",title:"New PPMP-Specification for processes"},next:{url:"/blog/2017/10/6/DZone-article-published",title:"DZone article published"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/c3e469380ccd51a92bb6.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"Validator-Online",content:"<p>Our first Production Performance Management Protocol-Validator as a HTTP-server is online!</p>\n<p>What we already contribtuted as sourcecode to the Unide-project we've also installed on an eclipse sandbox server. Now you are able to validate your Production Performance Management Protocol-messages through the internet without running the server on your local machine. The intention is to make the latest specification validator accessible to everyone at anytime.</p>\n<p>You can reach the server by sending POST-requests to the following endpoints:</p>\n<pre>\n<a>http://unide.eclipse.org/rest/v2/message?validate=true</a>\n<a>http://unide.eclipse.org/rest/v2/measurement?validate=true</a>\n<a>http://unide.eclipse.org/rest/v2/process?validate=true</a>\n</pre>\n<p>Further functions of the sandbox server will be also visualization and storaging of incoming Production Performance Management Protocol-messages.</p>\n",url:"/blog/2017/6/29/Validator-Online",title:"First Production Performance Management Protocol-Validator Online",date:new Date(14986944e5),tags:["validator"],prev:{url:"/blog/2017/6/1/New-process-message-spec",title:"New Production Performance Management Protocol-Specification for processes"},next:{url:"/blog/2017/10/6/DZone-article-published",title:"DZone article published"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/2918aa6661dd624eef70.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2017/6/29/index.html b/blog/2017/6/29/index.html
index 3e93b45..3e23cd2 100644
--- a/blog/2017/6/29/index.html
+++ b/blog/2017/6/29/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - July 29, 2017</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - July 29, 2017</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -17,21 +17,21 @@
     </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="blog column is-8"><h1 class="title is-3">
     July 29, 2017
   </h1> <ul><li><h2 class="title is-4"><a href="/unide/blog/2017/6/29/Validator-Online">
-          First PPMP-Validator Online
+          First Production Performance Management Protocol-Validator Online
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2017/6/29/Validator-Online"><i class="fa fa-calendar"></i>  
           29
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2017/6/29/Validator-Online",title:"First PPMP-Validator Online",date:new Date(14986944e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2017/6/29/Validator-Online",title:"First Production Performance Management Protocol-Validator Online",date:new Date(14986944e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2017/6/index.html b/blog/2017/6/index.html
index 2575415..517689d 100644
--- a/blog/2017/6/index.html
+++ b/blog/2017/6/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - July 2017</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - July 2017</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -17,25 +17,25 @@
     </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="blog column is-8"><h1 class="title is-3">
     July 2017
   </h1> <ul><li><h2 class="title is-4"><a href="/unide/blog/2017/6/29/Validator-Online">
-          First PPMP-Validator Online
+          First Production Performance Management Protocol-Validator Online
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2017/6/29/Validator-Online"><i class="fa fa-calendar"></i>  
           29
         </a></h3></li><li><h2 class="title is-4"><a href="/unide/blog/2017/6/1/New-process-message-spec">
-          New PPMP-Specification for processes
+          New Production Performance Management Protocol-Specification for processes
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2017/6/1/New-process-message-spec"><i class="fa fa-calendar"></i>  
           01
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -78,6 +78,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2017/6/29/Validator-Online",title:"First PPMP-Validator Online",date:new Date(14986944e5)},{url:"/blog/2017/6/1/New-process-message-spec",title:"New PPMP-Specification for processes",date:new Date(14962752e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2017/6/29/Validator-Online",title:"First Production Performance Management Protocol-Validator Online",date:new Date(14986944e5)},{url:"/blog/2017/6/1/New-process-message-spec",title:"New Production Performance Management Protocol-Specification for processes",date:new Date(14962752e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2017/index.html b/blog/2017/index.html
index 54194c5..d65c95d 100644
--- a/blog/2017/index.html
+++ b/blog/2017/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - 2017</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - 2017</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -25,11 +25,11 @@
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2017/10/6/DZone-article-published"><i class="fa fa-calendar"></i>  
           October 06
         </a></h3></li><li><h2 class="title is-4"><a href="/unide/blog/2017/6/29/Validator-Online">
-          First PPMP-Validator Online
+          First Production Performance Management Protocol-Validator Online
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2017/6/29/Validator-Online"><i class="fa fa-calendar"></i>  
           June 29
         </a></h3></li><li><h2 class="title is-4"><a href="/unide/blog/2017/6/1/New-process-message-spec">
-          New PPMP-Specification for processes
+          New Production Performance Management Protocol-Specification for processes
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2017/6/1/New-process-message-spec"><i class="fa fa-calendar"></i>  
           June 01
         </a></h3></li><li><h2 class="title is-4"><a href="/unide/blog/2017/3/23/Unide-at-BCX">
@@ -39,15 +39,15 @@
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -90,6 +90,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2017/10/19/i40-testbed-started",title:"Unide is part of Industry 4.0 Testbed",date:new Date(15083712e5)},{url:"/blog/2017/10/6/DZone-article-published",title:"DZone article published",date:new Date(1507248e6)},{url:"/blog/2017/6/29/Validator-Online",title:"First PPMP-Validator Online",date:new Date(14986944e5)},{url:"/blog/2017/6/1/New-process-message-spec",title:"New PPMP-Specification for processes",date:new Date(14962752e5)},{url:"/blog/2017/3/23/Unide-at-BCX",title:"Unide at Bosch Hackaton",date:new Date(14902884e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2017/10/19/i40-testbed-started",title:"Unide is part of Industry 4.0 Testbed",date:new Date(15083712e5)},{url:"/blog/2017/10/6/DZone-article-published",title:"DZone article published",date:new Date(1507248e6)},{url:"/blog/2017/6/29/Validator-Online",title:"First Production Performance Management Protocol-Validator Online",date:new Date(14986944e5)},{url:"/blog/2017/6/1/New-process-message-spec",title:"New Production Performance Management Protocol-Specification for processes",date:new Date(14962752e5)},{url:"/blog/2017/3/23/Unide-at-BCX",title:"Unide at Bosch Hackaton",date:new Date(14902884e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2018/1/26/New-website/index.html b/blog/2018/1/26/New-website/index.html
index a902881..ea4904b 100644
--- a/blog/2018/1/26/New-website/index.html
+++ b/blog/2018/1/26/New-website/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Updated Website</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
+    <title data-n-head="true">Eclipse unide - Updated Website</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -18,20 +18,20 @@
     Updated Website
   </h1> <h2 class="subtitle is-6"><i class="fa fa-calendar"></i>  
     01/26/18
-  </h2> <div class="content"><div><p>It turned out that even with multiple reviews, it is possible to have small mistakes in the PPMP documentation. In order to avoid such contradictions between diagrams, specification, json-schema and eventual implementation, we decided to rework the project structure and fixed <a href="https://github.com/eclipse/unide/issues/21">the JSON Schemas</a>. The corresponding uml diagrams are generated with <a href="http://plantuml.com/">plantuml</a>. For even better understandibility, the attributes are sorted lexicographically.</p>
-<p>Although the website has the same look, it is completely reworked as a <a href="https://en.wikipedia.org/wiki/Single-page_application">single-page application</a> to generate the specification directly from the json-schema. Instead of using <a href="https://hexo.io/">hexo</a> it is now based on <a href="https://nuxtjs.org/">nuxt.js</a>. <a href="https://vuejs.org/">Vue.js</a> as a basis for nuxt is also used in the <a href="https://github.com/eclipse/unide/tree/master/clients/binsa">new PPMP client application called binsa</a>.</p>
-</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2017/10/19/i40-testbed-started" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>Unide is part of Industry 4.0 Testbed</span></a></div> <div class="column"><a href="/unide/blog/2018/2/11/Transform-PPMP-with-camel" class="button is-fullwidth"><span>PPMP Use Cases: Simple Transformation with Apache Camel</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">
+  </h2> <div class="content"><div><p>It turned out that even with multiple reviews, it is possible to have small mistakes in the Production Performance Management Protocol documentation. In order to avoid such contradictions between diagrams, specification, json-schema and eventual implementation, we decided to rework the project structure and fixed <a href="https://github.com/eclipse/unide/issues/21">the JSON Schemas</a>. The corresponding uml diagrams are generated with <a href="http://plantuml.com/">plantuml</a>. For even better understandibility, the attributes are sorted lexicographically.</p>
+<p>Although the website has the same look, it is completely reworked as a <a href="https://en.wikipedia.org/wiki/Single-page_application">single-page application</a> to generate the specification directly from the json-schema. Instead of using <a href="https://hexo.io/">hexo</a> it is now based on <a href="https://nuxtjs.org/">nuxt.js</a>. <a href="https://vuejs.org/">Vue.js</a> as a basis for nuxt is also used in the <a href="https://github.com/eclipse/unide/tree/master/clients/binsa">new Production Performance Management Protocol client application called binsa</a>.</p>
+</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2017/10/19/i40-testbed-started" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>Unide is part of Industry 4.0 Testbed</span></a></div> <div class="column"><a href="/unide/blog/2018/2/11/Transform-PPMP-with-camel" class="button is-fullwidth"><span>Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel</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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"New-website",content:'<p>It turned out that even with multiple reviews, it is possible to have small mistakes in the PPMP documentation. In order to avoid such contradictions between diagrams, specification, json-schema and eventual implementation, we decided to rework the project structure and fixed <a href="https://github.com/eclipse/unide/issues/21">the JSON Schemas</a>. The corresponding uml diagrams are generated with <a href="http://plantuml.com/">plantuml</a>. For even better understandibility, the attributes are sorted lexicographically.</p>\n<p>Although the website has the same look, it is completely reworked as a <a href="https://en.wikipedia.org/wiki/Single-page_application">single-page application</a> to generate the specification directly from the json-schema. Instead of using <a href="https://hexo.io/">hexo</a> it is now based on <a href="https://nuxtjs.org/">nuxt.js</a>. <a href="https://vuejs.org/">Vue.js</a> as a basis for nuxt is also used in the <a href="https://github.com/eclipse/unide/tree/master/clients/binsa">new PPMP client application called binsa</a>.</p>\n',url:"/blog/2018/1/26/New-website",title:"Updated Website",date:new Date(15169248e5),tags:["media"],prev:{url:"/blog/2017/10/19/i40-testbed-started",title:"Unide is part of Industry 4.0 Testbed"},next:{url:"/blog/2018/2/11/Transform-PPMP-with-camel",title:"PPMP Use Cases: Simple Transformation with Apache Camel"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/c3e469380ccd51a92bb6.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"New-website",content:'<p>It turned out that even with multiple reviews, it is possible to have small mistakes in the Production Performance Management Protocol documentation. In order to avoid such contradictions between diagrams, specification, json-schema and eventual implementation, we decided to rework the project structure and fixed <a href="https://github.com/eclipse/unide/issues/21">the JSON Schemas</a>. The corresponding uml diagrams are generated with <a href="http://plantuml.com/">plantuml</a>. For even better understandibility, the attributes are sorted lexicographically.</p>\n<p>Although the website has the same look, it is completely reworked as a <a href="https://en.wikipedia.org/wiki/Single-page_application">single-page application</a> to generate the specification directly from the json-schema. Instead of using <a href="https://hexo.io/">hexo</a> it is now based on <a href="https://nuxtjs.org/">nuxt.js</a>. <a href="https://vuejs.org/">Vue.js</a> as a basis for nuxt is also used in the <a href="https://github.com/eclipse/unide/tree/master/clients/binsa">new Production Performance Management Protocol client application called binsa</a>.</p>\n',url:"/blog/2018/1/26/New-website",title:"Updated Website",date:new Date(15169248e5),tags:["media"],prev:{url:"/blog/2017/10/19/i40-testbed-started",title:"Unide is part of Industry 4.0 Testbed"},next:{url:"/blog/2018/2/11/Transform-PPMP-with-camel",title:"Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/2918aa6661dd624eef70.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2018/1/26/index.html b/blog/2018/1/26/index.html
index 6acb362..c50b01f 100644
--- a/blog/2018/1/26/index.html
+++ b/blog/2018/1/26/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - February 26, 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - February 26, 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -23,15 +23,15 @@
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/1/26/New-website",title:"Updated Website",date:new Date(15169248e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/1/26/New-website",title:"Updated Website",date:new Date(15169248e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2018/1/index.html b/blog/2018/1/index.html
index cea88c7..1e585a7 100644
--- a/blog/2018/1/index.html
+++ b/blog/2018/1/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - February 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - February 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -23,15 +23,15 @@
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/1/26/New-website",title:"Updated Website",date:new Date(15169248e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/1/26/New-website",title:"Updated Website",date:new Date(15169248e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2018/2/11/Transform-PPMP-with-camel/index.html b/blog/2018/2/11/Transform-PPMP-with-camel/index.html
index 0283d9c..bafd0c8 100644
--- a/blog/2018/2/11/Transform-PPMP-with-camel/index.html
+++ b/blog/2018/2/11/Transform-PPMP-with-camel/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - PPMP Use Cases: Simple Transformation with Apache Camel</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
+    <title data-n-head="true">Eclipse unide - Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -15,7 +15,7 @@
     </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">
-    PPMP Use Cases: Simple Transformation with Apache Camel
+    Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel
   </h1> <h2 class="subtitle is-6"><i class="fa fa-calendar"></i>  
     02/11/18
   </h2> <div class="content"><div><p>The Production Performance Management Protocol (PPMP) is a simple structure to send out machine data. Unide, as its hosting project, is supposed to provide exemplary implementations.</p>
@@ -35,7 +35,7 @@
 <p>One prerequisite for such connectivity is the hardware and its connectivity. Older generations of welding controllers can only be accessed with proprietary stacks (like the <a href="https://www.boschrexroth.com/en/xc/products/product-groups/welding-technology/controllers-with-power-section/mf-system-psi6000/index">PSI 6000</a>) whereas newer generations (like the <a href="https://www.boschrexroth.com/en/xc/company/press/index2-29696">PRC 7000</a>) are much more flexible in terms of networking and communication. In general, there are two aspects that make up the communication: the transport protocol and the structure of the payload. This is similar to our daily life: if you want to chat with your friends, you need to use the same messenger or communication technology (phone, email) and you need speak the same language (English, German etc.).</p>
 <p>In the following sections, let's assume we need to transform the transport protocol as well as the payload. The data is generated by a welding controller and should be passed to <a href="https://unide.eclipse.org">the unide REST server</a> for persisting it in a dedicated timeseries database.</p>
 <h1>The Approach</h1>
-<p>We want to find a way to receive the data, transform it into PPMP and store it into a database in our <a href="https://unide.eclipse.org">REST Server</a>.</p>
+<p>We want to find a way to receive the data, transform it into Production Performance Management Protocol and store it into a database in our <a href="https://unide.eclipse.org">REST Server</a>.</p>
 <p>First, we need to understand which interfaces the controller has, which communication protocol is used, and how the payload would be interpreted. In the case of the PSI 6000, it was configured to publish the quality data to a <a href="https://de.wikipedia.org/wiki/MQTT">mqtt</a> message broker (here: <a href="https://mosquitto.org/">Eclipse mosquitto</a>). We don't have an extensive documentation of the payload, but we can look at samples of it (some Curve data shortened at the end):</p>
 <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
   <span class="token property">"Name"</span><span class="token operator">:</span> <span class="token string">"WeldLog/UIR Testrack 24/"</span><span class="token punctuation">,</span>
@@ -194,7 +194,7 @@
 <span class="token punctuation">}</span>
 </code></pre>
 <p>That's already very detailed, but it's unclear which device / welding spot the data comes from and what the timing of the curves was. Let's get some more structure in with PPMP!</p>
-<p>In PPMP, we have the option to differentiate between discrete manufacturing data (MES - part produced) by using the <a href="/unide/specification/measurement-message">measurement-message</a> and detailed process data by using the <a href="https://www.eclipse.org/unide/specification/process-message">process-message</a>. In the welding payload, that's all combined in one message. So we also want to split this payload into two.</p>
+<p>In the Production Performance Management Protocol, we have the option to differentiate between discrete manufacturing data (MES - part produced) by using the <a href="/unide/specification/measurement-message">measurement-message</a> and detailed process data by using the <a href="https://www.eclipse.org/unide/specification/process-message">process-message</a>. In the welding payload, that's all combined in one message. So we also want to split this payload into two.</p>
 <h2>Introducing Apache Camel</h2>
 <div class="card figure is-pulled-left">
 	<div class="card-image">
@@ -230,7 +230,7 @@
 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>beans</span><span class="token punctuation">></span></span>
 </code></pre>
 <p>That's it! A <code>&lt;route></code> that reads<code>&lt;from></code> mqtt and forwards <code>&lt;to></code> http. Not so difficult, is it? We could use many of the other <a href="http://camel.apache.org/components.html">connectors / components</a> in the example above as well to transform from/to different protocols.</p>
-<p>But wait! The welding payload above was not PPMP. So we also need to normalize the payload.</p>
+<p>But wait! The welding payload above was not Production Performance Management Protocol. So we also need to normalize the payload.</p>
 <h2>Normalizing the Payload</h2>
 <p>Now that we can easily convert protocols, let's address the structure of the payload. Overall, we want to have a workflow that looks as described in the diagram below:</p>
 <div class="card figure">
@@ -246,10 +246,10 @@
 <p>The extra steps here are:</p>
 <ol>
 <li>transform the PSI 6000 JSON String payload to a java object</li>
-<li>transform the PSI 6000 java object to two PPMP-java objects (<a href="/unide/specification/measurement-message">measurement-message</a> and <a href="https://www.eclipse.org/unide/specification/process-message">process-message</a>)</li>
-<li>split up the two PPMP objects</li>
+<li>transform the PSI 6000 java object to two Production Performance Management Protocol-java objects (<a href="/unide/specification/measurement-message">measurement-message</a> and <a href="https://www.eclipse.org/unide/specification/process-message">process-message</a>)</li>
+<li>split up the two Production Performance Management Protocol objects</li>
 <li>route the objects individually</li>
-<li>transform each PPMP object back to a String</li>
+<li>transform each Production Performance Management Protocol object back to a String</li>
 </ol>
 <h3>Create the PSI 6000 Java Object</h3>
 <p>Luckily, there are helpers for transforming json (or xml) to plain old java objects (POJOs). We are using <a href="http://www.jsonschema2pojo.org/">jsonschema2pojo</a> to convert the above json sample to POJOs with Jackson 2.x annotation. I name the resulting data type class <code>PSI6000DataType</code> and organize it in the package <code>org.eclipse.iot.unide.integrators</code>. Based on the given testdata, jsonschema2pojo cannot fully deduct all attribute types correctly. In order to allow floating point values, we would rename all <code>Integer</code> and <code>Object</code> types to <code>Number</code> in the WeldLog.java file. Also in the same file, we would change the type of the <code>dateTime</code> field from String to <code>LocalDateTime</code> to be more accurate:</p>
@@ -279,8 +279,8 @@
 	...
 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>camelContext</span><span class="token punctuation">></span></span>
 </code></pre>
-<h3>Use unide.java binding for PPMP Java Objects</h3>
-<p>For eventually transforming the PPMP objects back to String ("<em>marshal</em>"), we can make use of the <a href="https://github.com/eclipse/unide.java">unide PPMP java binding</a>. Just adjust the dataFormats section of the Spring XML so that it reads:</p>
+<h3>Use unide.java binding for Production Performance Management Protocol Java Objects</h3>
+<p>For eventually transforming the Production Performance Management Protocol objects back to String ("<em>marshal</em>"), we can make use of the <a href="https://github.com/eclipse/unide.java">unide Production Performance Management Protocol java binding</a>. Just adjust the dataFormats section of the Spring XML so that it reads:</p>
 <pre class="language-xml"><code class="language-xml">...
 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>camelContext</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://camel.apache.org/schema/spring<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
 	<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>dataFormats</span><span class="token punctuation">></span></span>
@@ -391,9 +391,9 @@
 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>beans</span><span class="token punctuation">></span></span>
 </code></pre>
 <p>You might have noticed that we have not yet discussed one important item in this workflow: how do we actually transform the payload from one format to another?</p>
-<h3>Transforming from PSI 6000 POJO to PPMP POJOs</h3>
+<h3>Transforming from PSI 6000 POJO to Production Performance Management Protocol POJOs</h3>
 <p>One thing that we'll hardwire as java code is the transformation from the source to the target structure. The same functionality could be achieved with scripting components (e.g. <a href="http://camel.apache.org/groovy.html">groovy</a>, but that would be less powerful and worse performance. Since we don't expect the format to change but mostly the workflow or endpoints, implementing a java bean is not too much effort. Here's how:<br>
-Apache Camel offers a <code>Processor</code> interface that can be used to override the <code>process()</code> function. This function receives the complete message (<code>exchange</code>) and can modify it in any way. Since we have created the PSI 6000 Java Object already and want to produce PPMP java objects, the logic is mostly about creating the child objects and wiring the suitable getter to corresponding setter.</p>
+Apache Camel offers a <code>Processor</code> interface that can be used to override the <code>process()</code> function. This function receives the complete message (<code>exchange</code>) and can modify it in any way. Since we have created the PSI 6000 Java Object already and want to produce Production Performance Management Protocol java objects, the logic is mostly about creating the child objects and wiring the suitable getter to corresponding setter.</p>
 <pre class="language-java"><code class="language-java"><span class="token keyword">package</span> org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>integrators<span class="token punctuation">;</span>
 
 <span class="token keyword">import</span> java<span class="token punctuation">.</span>time<span class="token punctuation">.</span>OffsetDateTime<span class="token punctuation">;</span>
@@ -656,18 +656,18 @@
 </code></pre>
 <h1>Summary</h1>
 <p>It takes a while to understand the involved software components. Yet, once the set up is running, it gets much easier to adapt it to another Use Case. And another. The pattern of wiring protocols and transforming the payload is very similar. The involved frameworks are powerful enough to support many Use Cases. This article is supposed to show that there are simple possibilities to transform transport protocols and payloads, so that you can focus on addressing functional challenges.</p>
-</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2018/1/26/New-website" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>Updated Website</span></a></div> <div class="column"><a href="/unide/blog/2018/2/13/grinding-machine-scenario" class="button is-fullwidth"><span>PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed</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">
+</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2018/1/26/New-website" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>Updated Website</span></a></div> <div class="column"><a href="/unide/blog/2018/2/13/grinding-machine-scenario" class="button is-fullwidth"><span>Use Cases: Unide and the Eclipse Testbed</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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -710,6 +710,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"Transform-PPMP-with-camel",content:'<p>The Production Performance Management Protocol (PPMP) is a simple structure to send out machine data. Unide, as its hosting project, is supposed to provide exemplary implementations.</p>\n<p>We have already published <a href="https://github.com/eclipse/unide/tree/master/servers/rest">a REST server</a>, <a href="https://github.com/eclipse/unide.java">java-</a> and <a href="https://github.com/eclipse/unide.python">python-</a> bindings and an <a href="https://github.com/eclipse/unide/tree/master/clients/binsa">html5-client</a>. But how are these implementations used in real life?</p>\n<h1>The Challenge</h1>\n<div class="card figure">\n\t<div class="card-image">\n\t\t<figure class="image">\n\t\t\t<img alt="Welding robots" title="BMW plant, spot welding" src="/unide/images/blog/Transform-PPMP-with-camel-welding.jpg"></img>\n\t\t</figure>\n\t</div>\n\t<div class="card-content">\n\t\tBMW plant in Leipzig, Germany: Spot welding <a href="https://creativecommons.org/licenses/by-sa/2.0/de/deed.en">(CC BY-SA 2.0 DE)</a>\n\t</div>\n</div>\n<p>In the automotive industry, <a href="https://en.wikipedia.org/wiki/Spot_welding">welding spots</a> are crucial for the quality of a car and the security of the passenger. In modern production lines, hundreds of welding spots have to be precisely set in a single shift. In order to reduce product rework, scrap, destructible tests and machine downtime, the quality should be monitored consistently. That\'s what special welding controller in machines do. Unfortunately, this data is often only used locally, for a short period of time and in proprietary formats. Just enough to determine the immediate process outcome. In that case, further opportunities of analysing the information are not taken. With the continuous increase in complexity, price and time pressure, the demand for further processing and optimization grows. The data could be used to prevent or even predict maintenance or just store the data in long time archives in case of legal disputes.</p>\n<p>One prerequisite for such connectivity is the hardware and its connectivity. Older generations of welding controllers can only be accessed with proprietary stacks (like the <a href="https://www.boschrexroth.com/en/xc/products/product-groups/welding-technology/controllers-with-power-section/mf-system-psi6000/index">PSI 6000</a>) whereas newer generations (like the <a href="https://www.boschrexroth.com/en/xc/company/press/index2-29696">PRC 7000</a>) are much more flexible in terms of networking and communication. In general, there are two aspects that make up the communication: the transport protocol and the structure of the payload. This is similar to our daily life: if you want to chat with your friends, you need to use the same messenger or communication technology (phone, email) and you need speak the same language (English, German etc.).</p>\n<p>In the following sections, let\'s assume we need to transform the transport protocol as well as the payload. The data is generated by a welding controller and should be passed to <a href="https://unide.eclipse.org">the unide REST server</a> for persisting it in a dedicated timeseries database.</p>\n<h1>The Approach</h1>\n<p>We want to find a way to receive the data, transform it into PPMP and store it into a database in our <a href="https://unide.eclipse.org">REST Server</a>.</p>\n<p>First, we need to understand which interfaces the controller has, which communication protocol is used, and how the payload would be interpreted. In the case of the PSI 6000, it was configured to publish the quality data to a <a href="https://de.wikipedia.org/wiki/MQTT">mqtt</a> message broker (here: <a href="https://mosquitto.org/">Eclipse mosquitto</a>). We don\'t have an extensive documentation of the payload, but we can look at samples of it (some Curve data shortened at the end):</p>\n<pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>\n  <span class="token property">"Name"</span><span class="token operator">:</span> <span class="token string">"WeldLog/UIR Testrack 24/"</span><span class="token punctuation">,</span>\n  <span class="token property">"WeldTimer"</span><span class="token operator">:</span> <span class="token string">"UIR Testrack 24"</span><span class="token punctuation">,</span>\n  <span class="token property">"TimeStamp"</span><span class="token operator">:</span> <span class="token string">"2018-01-17T10:41:00.0008436+01:00"</span><span class="token punctuation">,</span>\n  <span class="token property">"OutputFormat"</span><span class="token operator">:</span> <span class="token string">"JSON"</span><span class="token punctuation">,</span>\n  <span class="token property">"Message"</span><span class="token operator">:</span> <span class="token punctuation">{</span>\n    <span class="token property">"WeldLog"</span><span class="token operator">:</span> <span class="token punctuation">{</span>\n      <span class="token property">"protRecord_ID"</span><span class="token operator">:</span> <span class="token number">734827</span><span class="token punctuation">,</span>\n      <span class="token property">"dateTime"</span><span class="token operator">:</span> <span class="token string">"2018-01-15T16:52:32.09"</span><span class="token punctuation">,</span>\n      <span class="token property">"timerName"</span><span class="token operator">:</span> <span class="token string">"UIR Testrack 24"</span><span class="token punctuation">,</span>\n      <span class="token property">"progNo"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"spotName"</span><span class="token operator">:</span> <span class="token string">""</span><span class="token punctuation">,</span>\n      <span class="token property">"wear"</span><span class="token operator">:</span> <span class="token number">8312480</span><span class="token punctuation">,</span>\n      <span class="token property">"wearPerCent"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"monitorState"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"regulationState"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"measureState"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"powerState"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"sequenceState"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"sequenceStateAdd"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"sequenceRepeat"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"monitorMode"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>\n      <span class="token property">"iDemandStd"</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>\n      <span class="token property">"ilsts"</span><span class="token operator">:</span> <span class="token number">13.14</span><span class="token punctuation">,</span>\n      <span class="token property">"regulationStd"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"iDemand1"</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>\n      <span class="token property">"iActual1"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"regulation1"</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span>\n      <span class="token property">"iDemand2"</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>\n      <span class="token property">"iActual2"</span><span class="token operator">:</span> <span class="token number">13.16</span><span class="token punctuation">,</span>\n      <span class="token property">"regulation2"</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span>\n      <span class="token property">"iDemand3"</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>\n      <span class="token property">"iActual3"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"regulation3"</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span>\n      <span class="token property">"phaStd"</span><span class="token operator">:</span> <span class="token number">24.96</span><span class="token punctuation">,</span>\n      <span class="token property">"pha1"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"pha2"</span><span class="token operator">:</span> <span class="token number">24.64</span><span class="token punctuation">,</span>\n      <span class="token property">"pha3"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"t_iDemandStd"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"tActualStd"</span><span class="token operator">:</span> <span class="token number">878</span><span class="token punctuation">,</span>\n      <span class="token property">"partIdentString"</span><span class="token operator">:</span> <span class="token string">""</span><span class="token punctuation">,</span>\n      <span class="token property">"tipDressCounter"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"electrodeNo"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"sgForceSetPoint"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sgSheetThicknessSetPoint"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sgSagGpSetPoint"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sgSpotWithSg"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sgMotorCurrent"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sgMotorTemp"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sgForce"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sgSheetThickness"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sgSagGp"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sgSagGc"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"regUsrUspJunction"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"regUsrUspMax"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"regSpotDiaActual"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"regSpotDiaMinDemand"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"regSplashTime"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"nuggetDiameter"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"usp"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"normingTime"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"regulationStartTime"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"returnToConstantCurrent"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"declineUsp"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"offsetUsp"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"currentFactor"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"triggerTime"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"xqrMeasuringActive"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"xqrRegulationActive"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"xqrMonitoringActive"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"xqrWeldTimeProlongationActive"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"voltageActualValue"</span><span class="token operator">:</span> <span class="token number">0.03</span><span class="token punctuation">,</span>\n      <span class="token property">"voltageRefValue"</span><span class="token operator">:</span> <span class="token number">0.03</span><span class="token punctuation">,</span>\n      <span class="token property">"currentActualValue"</span><span class="token operator">:</span> <span class="token number">13.17</span><span class="token punctuation">,</span>\n      <span class="token property">"currentReferenceValue"</span><span class="token operator">:</span> <span class="token number">13.95</span><span class="token punctuation">,</span>\n      <span class="token property">"weldTimeActualValue"</span><span class="token operator">:</span> <span class="token number">876</span><span class="token punctuation">,</span>\n      <span class="token property">"weldTimeRefValue"</span><span class="token operator">:</span> <span class="token number">760</span><span class="token punctuation">,</span>\n      <span class="token property">"energyActualValue"</span><span class="token operator">:</span> <span class="token number">395.1261</span><span class="token punctuation">,</span>\n      <span class="token property">"energyRefValue"</span><span class="token operator">:</span> <span class="token number">342</span><span class="token punctuation">,</span>\n      <span class="token property">"powerActualValue"</span><span class="token operator">:</span> <span class="token number">395.133</span><span class="token punctuation">,</span>\n      <span class="token property">"powerRefValue"</span><span class="token operator">:</span> <span class="token number">449.35</span><span class="token punctuation">,</span>\n      <span class="token property">"resistanceActualValue"</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>\n      <span class="token property">"resistanceRefValue"</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>\n      <span class="token property">"pulseWidthActualValue"</span><span class="token operator">:</span> <span class="token number">25.02</span><span class="token punctuation">,</span>\n      <span class="token property">"pulseWidthRefValue"</span><span class="token operator">:</span> <span class="token number">26.19</span><span class="token punctuation">,</span>\n      <span class="token property">"stabilisationFactorActValue"</span><span class="token operator">:</span> <span class="token number">55</span><span class="token punctuation">,</span>\n      <span class="token property">"stabilisationFactorRefValue"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"thresholdStabilisationFactor"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"wldEffectStabilisationFactor"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"uipActualValue"</span><span class="token operator">:</span> <span class="token number">126</span><span class="token punctuation">,</span>\n      <span class="token property">"uipRefValue"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"uirExpulsionTime"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"uirMeasuringActive"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>\n      <span class="token property">"uirRegulationActive"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>\n      <span class="token property">"uirMonitoringActive"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"uirWeldTimeProlongationActive"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>\n      <span class="token property">"uirQStoppRefCntValue"</span><span class="token operator">:</span> <span class="token number">9</span><span class="token punctuation">,</span>\n      <span class="token property">"uirQStoppActCntValue"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"uirUipUpperTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"uirUipLowerTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"uirUipCondTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"uirPsfLowerTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"uirPsfCondTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_1"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_2"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_3"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_4"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_5"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP32_6"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_7"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_8"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_9"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_10"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_11"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP32_12"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_13"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_14"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_15"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_16"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_17"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP32_18"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"uipMonCondUpperTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"fqfActualValue"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"fqfRefValue"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"fqfMonUpperTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"fqfMonLowerTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"fqfMonCondUpperTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"fqfMonCondLowerTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"fqfMeasuringActive"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"xqrModeOff"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"reweldActive"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"weldspotRefIdent"</span><span class="token operator">:</span> <span class="token string">"UIR_PART"</span><span class="token punctuation">,</span>\n      <span class="token property">"sg_Torque_Gp"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sg_Force_Corr"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sg_Weldspot_Geo_Wear"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sg_Wear_Length"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sg_Beam_UpArching"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"CurrentCurve"</span><span class="token operator">:</span> <span class="token punctuation">[</span>\n        <span class="token number">11621</span><span class="token punctuation">,</span>\n        <span class="token number">15434</span><span class="token punctuation">,</span>\n        ...\n      <span class="token punctuation">]</span><span class="token punctuation">,</span>\n      <span class="token property">"VoltageCurve"</span><span class="token operator">:</span> <span class="token punctuation">[</span>\n        <span class="token number">39</span><span class="token punctuation">,</span>\n        <span class="token number">29</span><span class="token punctuation">,</span>\n        ...\n      <span class="token punctuation">]</span><span class="token punctuation">,</span>\n      <span class="token property">"ForceCurve"</span><span class="token operator">:</span> <span class="token punctuation">[</span>\n        <span class="token number">49</span><span class="token punctuation">,</span>\n        <span class="token number">49</span><span class="token punctuation">,</span>\n        ...\n      <span class="token punctuation">]</span>\n    <span class="token punctuation">}</span>\n  <span class="token punctuation">}</span>\n<span class="token punctuation">}</span>\n</code></pre>\n<p>That\'s already very detailed, but it\'s unclear which device / welding spot the data comes from and what the timing of the curves was. Let\'s get some more structure in with PPMP!</p>\n<p>In PPMP, we have the option to differentiate between discrete manufacturing data (MES - part produced) by using the <a href="/unide/specification/measurement-message">measurement-message</a> and detailed process data by using the <a href="https://www.eclipse.org/unide/specification/process-message">process-message</a>. In the welding payload, that\'s all combined in one message. So we also want to split this payload into two.</p>\n<h2>Introducing Apache Camel</h2>\n<div class="card figure is-pulled-left">\n\t<div class="card-image">\n\t\t<figure class="image">\n\t\t\t<img alt="Apache Camel" title="Apache Camel" src="/unide/images/blog/Transform-PPMP-with-camel-camel.png"></img>\n\t\t</figure>\n\t</div>\n\t<div class="card-content">\n\t\tApache Camel, <a href="https://www.apache.org/licenses/LICENSE-2.0">(Apache&nbsp;License&nbsp;2.0)</a>\n\t</div>\n</div>\n<p><a href="https://en.wikipedia.org/wiki/Apache_Camel">Apache Camel</a> is a java-based Open Source framework, that can transform and route data. It supports most of the <a href="https://en.wikipedia.org/wiki/Enterprise_Integration_Patterns">Enterprise Integration Patterns</a> and hundreds(!) of <a href="http://camel.apache.org/components.html">connectors / components</a>. Think of it as an extensive transformation and workflow automation engine. In fact, it\'s so powerful and versatile, that it unfortunately doesn\'t come with a visual user interface or a plug-and-play installer. Luckily, for everyone who doesn\'t happen to be a java expert, there\'s also an xml configuration (via <a href="https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/xsd-configuration.html">spring xml</a>). And that\'s mostly all we need!</p>\n<h2>Transforming the Communication Protocol</h2>\n<p>We will use Spring XML to configure Apache Camel. The workflow in Camel are called <code>&lt;routes&gt;</code>. So let\'s create a route that transforms our mqtt to REST protocol:</p>\n<pre class="language-xml"><code class="language-xml"><span class="token prolog">&lt;?xml version="1.0" encoding="UTF-8"?></span>\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>beans</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://www.springframework.org/schema/beans<span class="token punctuation">"</span></span>\n\t<span class="token attr-name"><span class="token namespace">xmlns:</span>xsi</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://www.w3.org/2001/XMLSchema-instance<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>camel</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://camel.apache.org/schema/spring<span class="token punctuation">"</span></span>\n\t<span class="token attr-name"><span class="token namespace">xmlns:</span>util</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://www.springframework.org/schema/util<span class="token punctuation">"</span></span>\n\t<span class="token attr-name"><span class="token namespace">xsi:</span>schemaLocation</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://www.springframework.org/schema/util\n\thttp://www.springframework.org/schema/util/spring-util.xsd \n\thttp://www.springframework.org/schema/beans\n    http://www.springframework.org/schema/beans/spring-beans.xsd\n    http://camel.apache.org/schema/spring\n    http://camel.apache.org/schema/spring/camel-spring.xsd<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>camelContext</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://camel.apache.org/schema/spring<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>route</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>from</span>\n\t\t\t\t<span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>mqtt://psi6000?host=tcp://192.168.123.135:1883<span class="token entity" title="&amp;">&amp;amp;</span>subscribeTopicName=PSI6000//PROCESS/PPMP/PROCESS<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>to</span>\n\t\t\t\t<span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>jetty:http://unide.eclipse.org:8080/rest/v2/measurement?bridgeEndpoint=true<span class="token entity" title="&amp;">&amp;amp;</span>throwExceptionOnFailure=true<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>route</span><span class="token punctuation">></span></span>\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>camelContext</span><span class="token punctuation">></span></span>\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>beans</span><span class="token punctuation">></span></span>\n</code></pre>\n<p>That\'s it! A <code>&lt;route&gt;</code> that reads<code>&lt;from&gt;</code> mqtt and forwards <code>&lt;to&gt;</code> http. Not so difficult, is it? We could use many of the other <a href="http://camel.apache.org/components.html">connectors / components</a> in the example above as well to transform from/to different protocols.</p>\n<p>But wait! The welding payload above was not PPMP. So we also need to normalize the payload.</p>\n<h2>Normalizing the Payload</h2>\n<p>Now that we can easily convert protocols, let\'s address the structure of the payload. Overall, we want to have a workflow that looks as described in the diagram below:</p>\n<div class="card figure">\n\t<div class="card-image">\n\t\t<figure class="image">\n\t\t\t<img alt="data workflow" title="data workflow" src="/unide/images/blog/Transform-PPMP-with-camel-1.svg"></img>\n\t\t</figure>\n\t</div>\n\t<div class="card-content">\n\t\tWorkflow to extract the data from controller, convert it and send the data to the cloud application\n\t</div>\n</div>\n<p>The extra steps here are:</p>\n<ol>\n<li>transform the PSI 6000 JSON String payload to a java object</li>\n<li>transform the PSI 6000 java object to two PPMP-java objects (<a href="/unide/specification/measurement-message">measurement-message</a> and <a href="https://www.eclipse.org/unide/specification/process-message">process-message</a>)</li>\n<li>split up the two PPMP objects</li>\n<li>route the objects individually</li>\n<li>transform each PPMP object back to a String</li>\n</ol>\n<h3>Create the PSI 6000 Java Object</h3>\n<p>Luckily, there are helpers for transforming json (or xml) to plain old java objects (POJOs). We are using <a href="http://www.jsonschema2pojo.org/">jsonschema2pojo</a> to convert the above json sample to POJOs with Jackson 2.x annotation. I name the resulting data type class <code>PSI6000DataType</code> and organize it in the package <code>org.eclipse.iot.unide.integrators</code>. Based on the given testdata, jsonschema2pojo cannot fully deduct all attribute types correctly. In order to allow floating point values, we would rename all <code>Integer</code> and <code>Object</code> types to <code>Number</code> in the WeldLog.java file. Also in the same file, we would change the type of the <code>dateTime</code> field from String to <code>LocalDateTime</code> to be more accurate:</p>\n<pre class="language-java"><code class="language-java"><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>\n<span class="token annotation punctuation">@JsonProperty</span><span class="token punctuation">(</span><span class="token string">"dateTime"</span><span class="token punctuation">)</span>\n<span class="token annotation punctuation">@JsonSerialize</span><span class="token punctuation">(</span>using <span class="token operator">=</span> LocalDateTimeSerializer<span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span>\n<span class="token annotation punctuation">@JsonDeserialize</span><span class="token punctuation">(</span>using <span class="token operator">=</span> LocalDateTimeDeserializer<span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span>\n<span class="token keyword">private</span> LocalDateTime dateTime<span class="token punctuation">;</span>\n<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>\n</code></pre>\n<p>For that, we also need to include the respective imports:</p>\n<pre class="language-java"><code class="language-java"><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>\n<span class="token keyword">import</span> com<span class="token punctuation">.</span>fasterxml<span class="token punctuation">.</span>jackson<span class="token punctuation">.</span>databind<span class="token punctuation">.</span>annotation<span class="token punctuation">.</span>JsonDeserialize<span class="token punctuation">;</span>\n<span class="token keyword">import</span> com<span class="token punctuation">.</span>fasterxml<span class="token punctuation">.</span>jackson<span class="token punctuation">.</span>databind<span class="token punctuation">.</span>annotation<span class="token punctuation">.</span>JsonSerialize<span class="token punctuation">;</span>\n<span class="token keyword">import</span> com<span class="token punctuation">.</span>fasterxml<span class="token punctuation">.</span>jackson<span class="token punctuation">.</span>datatype<span class="token punctuation">.</span>jsr310<span class="token punctuation">.</span>deser<span class="token punctuation">.</span>LocalDateTimeDeserializer<span class="token punctuation">;</span>\n<span class="token keyword">import</span> com<span class="token punctuation">.</span>fasterxml<span class="token punctuation">.</span>jackson<span class="token punctuation">.</span>datatype<span class="token punctuation">.</span>jsr310<span class="token punctuation">.</span>ser<span class="token punctuation">.</span>LocalDateTimeSerializer<span class="token punctuation">;</span>\n<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>\n</code></pre>\n<p>and adjust the getter (<code>getDateTime()</code>), setter (<code>setDateTime()</code>) and the type in the constructor (<code>public WeldLog(...)</code>) accordingly.</p>\n<p>Camel will be able to transform (&quot;<em>unmarshal</em>&quot;) this datatype from a string to a POJO after adding the definition to the above Spring XML:</p>\n<pre class="language-xml"><code class="language-xml">...\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>camelContext</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://camel.apache.org/schema/spring<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>dataFormats</span><span class="token punctuation">></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>json</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>psi6000<span class="token punctuation">"</span></span> <span class="token attr-name">library</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Jackson<span class="token punctuation">"</span></span>\n\t\t\t<span class="token attr-name">unmarshalTypeName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>org.eclipse.iot.unide.integrators.PSI6000DataType<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>dataFormats</span><span class="token punctuation">></span></span>\n\t...\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>camelContext</span><span class="token punctuation">></span></span>\n</code></pre>\n<h3>Use unide.java binding for PPMP Java Objects</h3>\n<p>For eventually transforming the PPMP objects back to String (&quot;<em>marshal</em>&quot;), we can make use of the <a href="https://github.com/eclipse/unide.java">unide PPMP java binding</a>. Just adjust the dataFormats section of the Spring XML so that it reads:</p>\n<pre class="language-xml"><code class="language-xml">...\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>camelContext</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://camel.apache.org/schema/spring<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>dataFormats</span><span class="token punctuation">></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>json</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>psi6000<span class="token punctuation">"</span></span> <span class="token attr-name">library</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Jackson<span class="token punctuation">"</span></span>\n\t\t\t<span class="token attr-name">unmarshalTypeName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>org.eclipse.iot.unide.integrators.PSI6000DataType<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>json</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>ppmpMeasurementMessage<span class="token punctuation">"</span></span> <span class="token attr-name">library</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Jackson<span class="token punctuation">"</span></span>\n\t\t\t<span class="token attr-name">unmarshalTypeName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>org.eclipse.iot.unide.ppmp.measurements.MeasurementsWrapper<span class="token punctuation">"</span></span>\n\t\t\t<span class="token attr-name">moduleClassNames</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>com.fasterxml.jackson.datatype.jsr310.JavaTimeModule<span class="token punctuation">"</span></span>\n\t\t\t<span class="token attr-name">disableFeatures</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>WRITE_DATES_AS_TIMESTAMPS<span class="token punctuation">"</span></span> \n\t\t\t<span class="token attr-name">include</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>NON_NULL<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>json</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>ppmpProcessMessage<span class="token punctuation">"</span></span> <span class="token attr-name">library</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Jackson<span class="token punctuation">"</span></span>\n\t\t\t<span class="token attr-name">unmarshalTypeName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>org.eclipse.iot.unide.ppmp.process.ProcessWrapper<span class="token punctuation">"</span></span>\n\t\t\t<span class="token attr-name">moduleClassNames</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>com.fasterxml.jackson.datatype.jsr310.JavaTimeModule<span class="token punctuation">"</span></span>\n\t\t\t<span class="token attr-name">disableFeatures</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>WRITE_DATES_AS_TIMESTAMPS<span class="token punctuation">"</span></span>\n\t\t\t<span class="token attr-name">include</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>NON_NULL<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>dataFormats</span><span class="token punctuation">></span></span>\n\t...\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>camelContext</span><span class="token punctuation">></span></span>\n</code></pre>\n<h3>Create the Workflow</h3>\n<p>In order to better structure data flow, we use multiple <code>&lt;route&gt;</code>-s: one for retrieving the data and two more after the split of the payload. They are connected via the virtual camel protocol &quot;<em>direct</em>&quot;. In the following Spring XML, you can also find some <code>&lt;log&gt;</code> points and additional steps to set http header (<code>&lt;setHeader&gt;</code>) for posting to the unide server:</p>\n<pre class="language-xml"><code class="language-xml"><span class="token prolog">&lt;?xml version="1.0" encoding="UTF-8"?></span>\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>beans</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://www.springframework.org/schema/beans<span class="token punctuation">"</span></span>\n\t<span class="token attr-name"><span class="token namespace">xmlns:</span>xsi</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://www.w3.org/2001/XMLSchema-instance<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>camel</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://camel.apache.org/schema/spring<span class="token punctuation">"</span></span>\n\t<span class="token attr-name"><span class="token namespace">xmlns:</span>util</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://www.springframework.org/schema/util<span class="token punctuation">"</span></span>\n\t<span class="token attr-name"><span class="token namespace">xsi:</span>schemaLocation</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://www.springframework.org/schema/util\n\thttp://www.springframework.org/schema/util/spring-util.xsd \n\thttp://www.springframework.org/schema/beans\n    http://www.springframework.org/schema/beans/spring-beans.xsd\n    http://camel.apache.org/schema/spring\n    http://camel.apache.org/schema/spring/camel-spring.xsd<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>bean</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>psi6000-to-ppmp<span class="token punctuation">"</span></span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>org.eclipse.iot.unide.integrators.PSI6000<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>bean</span><span class="token punctuation">></span></span>\n\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>camelContext</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://camel.apache.org/schema/spring<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>dataFormats</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>json</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>psi6000<span class="token punctuation">"</span></span> <span class="token attr-name">library</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Jackson<span class="token punctuation">"</span></span>\n\t\t\t\t<span class="token attr-name">unmarshalTypeName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>org.eclipse.iot.unide.integrators.PSI6000DataType<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>json</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>ppmpMeasurementMessage<span class="token punctuation">"</span></span> <span class="token attr-name">library</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Jackson<span class="token punctuation">"</span></span>\n\t\t\t\t<span class="token attr-name">unmarshalTypeName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>org.eclipse.iot.unide.ppmp.measurements.MeasurementsWrapper<span class="token punctuation">"</span></span>\n\t\t\t\t<span class="token attr-name">moduleClassNames</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>com.fasterxml.jackson.datatype.jsr310.JavaTimeModule<span class="token punctuation">"</span></span>\n\t\t\t\t<span class="token attr-name">disableFeatures</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>WRITE_DATES_AS_TIMESTAMPS<span class="token punctuation">"</span></span> <span class="token attr-name">include</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>NON_NULL<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>json</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>ppmpProcessMessage<span class="token punctuation">"</span></span> <span class="token attr-name">library</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Jackson<span class="token punctuation">"</span></span>\n\t\t\t\t<span class="token attr-name">unmarshalTypeName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>org.eclipse.iot.unide.ppmp.process.ProcessWrapper<span class="token punctuation">"</span></span>\n\t\t\t\t<span class="token attr-name">moduleClassNames</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>com.fasterxml.jackson.datatype.jsr310.JavaTimeModule<span class="token punctuation">"</span></span>\n\t\t\t\t<span class="token attr-name">disableFeatures</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>WRITE_DATES_AS_TIMESTAMPS<span class="token punctuation">"</span></span> <span class="token attr-name">include</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>NON_NULL<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>dataFormats</span><span class="token punctuation">></span></span>\n\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>route</span> <span class="token attr-name">autoStartup</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>true<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>from</span>\n\t\t\t\t<span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>mqtt://psi6000?host=tcp://192.168.123.135:1883<span class="token entity" title="&amp;">&amp;amp;</span>subscribeTopicName=PSI6000//PROCESS/PPMP/PROCESS<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>unmarshal</span> <span class="token attr-name">ref</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>psi6000<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>bean</span> <span class="token attr-name">ref</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>psi6000-to-ppmp<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>setHeader</span> <span class="token attr-name">headerName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Content-Type<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>constant</span><span class="token punctuation">></span></span>application/json; charset=utf-8<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>constant</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>setHeader</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>setHeader</span> <span class="token attr-name">headerName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>CamelHttpMethod<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>constant</span><span class="token punctuation">></span></span>POST<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>constant</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>setHeader</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>multicast</span><span class="token punctuation">></span></span>\n\t\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>to</span> <span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>direct:measurement<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>to</span> <span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>direct:process<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>multicast</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>log</span> <span class="token attr-name">message</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>done<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>setBody</span><span class="token punctuation">></span></span>\n\t\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>simple</span><span class="token punctuation">></span></span>{"result": true }<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>simple</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>setBody</span><span class="token punctuation">></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>route</span><span class="token punctuation">></span></span>\n\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>route</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>from</span> <span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>direct:measurement<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>setBody</span><span class="token punctuation">></span></span>\n\t\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>simple</span><span class="token punctuation">></span></span>${body[0]}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>simple</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>setBody</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>log</span> <span class="token attr-name">message</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>deviceId measurement: ${body.device.deviceID}<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>marshal</span> <span class="token attr-name">ref</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>ppmpMeasurementMessage<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>log</span> <span class="token attr-name">message</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>sending measurement<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>setHeader</span> <span class="token attr-name">headerName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Content-Length<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>simple</span><span class="token punctuation">></span></span>body.length<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>simple</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>setHeader</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>to</span>\n\t\t\t\t<span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>jetty:http://unide.eclipse.org:8080/rest/v2/measurement?bridgeEndpoint=true<span class="token entity" title="&amp;">&amp;amp;</span>throwExceptionOnFailure=true<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>log</span> <span class="token attr-name">message</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>measurement sent<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>route</span><span class="token punctuation">></span></span>\n\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>route</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>from</span> <span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>direct:process<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>setBody</span><span class="token punctuation">></span></span>\n\t\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>simple</span><span class="token punctuation">></span></span>${body[1]}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>simple</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>setBody</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>log</span> <span class="token attr-name">message</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>deviceId process: ${body.device.deviceID}<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>marshal</span> <span class="token attr-name">ref</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>ppmpProcessMessage<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>log</span> <span class="token attr-name">message</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>sending process<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>setHeader</span> <span class="token attr-name">headerName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Content-Length<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>simple</span><span class="token punctuation">></span></span>body.length<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>simple</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>setHeader</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>to</span>\n\t\t\t\t<span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>jetty:http://unide.eclipse.org:8080/rest/v2/process?bridgeEndpoint=true<span class="token entity" title="&amp;">&amp;amp;</span>throwExceptionOnFailure=true<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>log</span> <span class="token attr-name">message</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>process sent<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>route</span><span class="token punctuation">></span></span>\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>camelContext</span><span class="token punctuation">></span></span>\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>beans</span><span class="token punctuation">></span></span>\n</code></pre>\n<p>You might have noticed that we have not yet discussed one important item in this workflow: how do we actually transform the payload from one format to another?</p>\n<h3>Transforming from PSI 6000 POJO to PPMP POJOs</h3>\n<p>One thing that we\'ll hardwire as java code is the transformation from the source to the target structure. The same functionality could be achieved with scripting components (e.g. <a href="http://camel.apache.org/groovy.html">groovy</a>, but that would be less powerful and worse performance. Since we don\'t expect the format to change but mostly the workflow or endpoints, implementing a java bean is not too much effort. Here\'s how:<br>\nApache Camel offers a <code>Processor</code> interface that can be used to override the <code>process()</code> function. This function receives the complete message (<code>exchange</code>) and can modify it in any way. Since we have created the PSI 6000 Java Object already and want to produce PPMP java objects, the logic is mostly about creating the child objects and wiring the suitable getter to corresponding setter.</p>\n<pre class="language-java"><code class="language-java"><span class="token keyword">package</span> org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>integrators<span class="token punctuation">;</span>\n\n<span class="token keyword">import</span> java<span class="token punctuation">.</span>time<span class="token punctuation">.</span>OffsetDateTime<span class="token punctuation">;</span>\n<span class="token keyword">import</span> java<span class="token punctuation">.</span>time<span class="token punctuation">.</span>ZoneOffset<span class="token punctuation">;</span>\n<span class="token keyword">import</span> java<span class="token punctuation">.</span>util<span class="token punctuation">.</span>Arrays<span class="token punctuation">;</span>\n<span class="token keyword">import</span> java<span class="token punctuation">.</span>util<span class="token punctuation">.</span>LinkedList<span class="token punctuation">;</span>\n<span class="token keyword">import</span> java<span class="token punctuation">.</span>util<span class="token punctuation">.</span>List<span class="token punctuation">;</span>\n\n<span class="token keyword">import</span> org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>camel<span class="token punctuation">.</span>Exchange<span class="token punctuation">;</span>\n<span class="token keyword">import</span> org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>camel<span class="token punctuation">.</span>Message<span class="token punctuation">;</span>\n<span class="token keyword">import</span> org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>camel<span class="token punctuation">.</span>Processor<span class="token punctuation">;</span>\n<span class="token keyword">import</span> org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>commons<span class="token punctuation">.</span>Device<span class="token punctuation">;</span>\n<span class="token keyword">import</span> org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>commons<span class="token punctuation">.</span>MetaData<span class="token punctuation">;</span>\n<span class="token keyword">import</span> org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>MeasurementsWrapper<span class="token punctuation">;</span>\n<span class="token keyword">import</span> org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>Process<span class="token punctuation">;</span>\n<span class="token keyword">import</span> org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>ProcessWrapper<span class="token punctuation">;</span>\n\n<span class="token keyword">import</span> com<span class="token punctuation">.</span>fasterxml<span class="token punctuation">.</span>jackson<span class="token punctuation">.</span>core<span class="token punctuation">.</span>JsonProcessingException<span class="token punctuation">;</span>\n\n<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">PSI6000</span> <span class="token keyword">implements</span> <span class="token class-name">Processor</span> <span class="token punctuation">{</span>\n\n\t<span class="token keyword">public</span> <span class="token function">PSI6000</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>\n\n\t<span class="token keyword">private</span> org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>SeriesMap <span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>\n\t\t\torg<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>SeriesMap map<span class="token punctuation">,</span> String name<span class="token punctuation">,</span> Number value<span class="token punctuation">)</span> <span class="token punctuation">{</span>\n\t\t<span class="token keyword">if</span> <span class="token punctuation">(</span>value <span class="token operator">!=</span> null<span class="token punctuation">)</span> <span class="token punctuation">{</span>\n\t\t\tmap<span class="token punctuation">.</span><span class="token function">setSeriesValue</span><span class="token punctuation">(</span>name<span class="token punctuation">,</span> Arrays<span class="token punctuation">.</span><span class="token function">asList</span><span class="token punctuation">(</span>value<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token punctuation">}</span>\n\t\t<span class="token keyword">return</span> map<span class="token punctuation">;</span>\n\t<span class="token punctuation">}</span>\n\n\t<span class="token annotation punctuation">@Override</span>\n\t<span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">process</span><span class="token punctuation">(</span>Exchange exchange<span class="token punctuation">)</span> <span class="token keyword">throws</span> JsonProcessingException<span class="token punctuation">,</span> Exception <span class="token punctuation">{</span>\n\t\tMessage msg <span class="token operator">=</span> exchange<span class="token punctuation">.</span><span class="token function">getIn</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tPSI6000DataType doc <span class="token operator">=</span> msg<span class="token punctuation">.</span><span class="token function">getBody</span><span class="token punctuation">(</span>PSI6000DataType<span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\tObject <span class="token punctuation">[</span><span class="token punctuation">]</span>bundle <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Object</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">;</span>\n\t\tbundle<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span>       <span class="token operator">=</span> <span class="token function">transformMeasurement</span><span class="token punctuation">(</span>doc<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tbundle<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span>       <span class="token operator">=</span> <span class="token function">transformProcess</span><span class="token punctuation">(</span>doc<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tmsg<span class="token punctuation">.</span><span class="token function">setBody</span><span class="token punctuation">(</span>bundle<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\texchange<span class="token punctuation">.</span><span class="token function">setOut</span><span class="token punctuation">(</span>msg<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t<span class="token punctuation">}</span>\n\n\t<span class="token keyword">private</span> <span class="token keyword">void</span> <span class="token function">setSpotName</span><span class="token punctuation">(</span>Device device<span class="token punctuation">,</span> WeldLog wl<span class="token punctuation">)</span> <span class="token punctuation">{</span>\n\t\tString spotName <span class="token operator">=</span> wl<span class="token punctuation">.</span><span class="token function">getSpotName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token keyword">if</span> <span class="token punctuation">(</span>spotName <span class="token operator">!=</span> null <span class="token operator">&amp;&amp;</span> spotName<span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>\n\t\t\tMetaData md <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">MetaData</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t\tmd<span class="token punctuation">.</span><span class="token function">setMetaDataValue</span><span class="token punctuation">(</span><span class="token string">"spotName"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSpotName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t\tdevice<span class="token punctuation">.</span><span class="token function">setMetaData</span><span class="token punctuation">(</span>md<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token punctuation">}</span>\n\t<span class="token punctuation">}</span>\n\n\t<span class="token keyword">private</span> ProcessWrapper <span class="token function">transformProcess</span><span class="token punctuation">(</span>PSI6000DataType doc<span class="token punctuation">)</span> <span class="token punctuation">{</span>\n\t\tProcessWrapper wrapper <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ProcessWrapper</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tWeldLog wl <span class="token operator">=</span> doc<span class="token punctuation">.</span><span class="token function">getMessage</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getWeldLog</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tOffsetDateTime odt <span class="token operator">=</span> OffsetDateTime<span class="token punctuation">.</span><span class="token function">of</span><span class="token punctuation">(</span>wl<span class="token punctuation">.</span><span class="token function">getDateTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> ZoneOffset<span class="token punctuation">.</span>UTC<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token comment">// device</span>\n\t\tDevice device <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Device</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tdevice<span class="token punctuation">.</span><span class="token function">setDeviceID</span><span class="token punctuation">(</span>doc<span class="token punctuation">.</span><span class="token function">getMessage</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getWeldLog</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTimerName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">setSpotName</span><span class="token punctuation">(</span>device<span class="token punctuation">,</span> wl<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\twrapper<span class="token punctuation">.</span><span class="token function">setDevice</span><span class="token punctuation">(</span>device<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token comment">// part</span>\n\t\tString partId <span class="token operator">=</span> wl<span class="token punctuation">.</span><span class="token function">getPartIdentString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token keyword">if</span> <span class="token punctuation">(</span>partId <span class="token operator">!=</span> null <span class="token operator">&amp;&amp;</span> partId<span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>\n\t\t\torg<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>Part part <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>Part</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t\tpart<span class="token punctuation">.</span><span class="token function">setPartID</span><span class="token punctuation">(</span>partId<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t\twrapper<span class="token punctuation">.</span><span class="token function">setPart</span><span class="token punctuation">(</span>part<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token punctuation">}</span>\n\n\t\t<span class="token comment">// process</span>\n\t\tProcess process <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Process</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tprocess<span class="token punctuation">.</span><span class="token function">setTimestamp</span><span class="token punctuation">(</span>odt<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tprocess<span class="token punctuation">.</span><span class="token function">setExternalProcessId</span><span class="token punctuation">(</span>String<span class="token punctuation">.</span><span class="token function">valueOf</span><span class="token punctuation">(</span>wl<span class="token punctuation">.</span><span class="token function">getProtRecordID</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\twrapper<span class="token punctuation">.</span><span class="token function">setProcess</span><span class="token punctuation">(</span>process<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token comment">// measurements</span>\n\t\tList<span class="token operator">&lt;</span>org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>Measurements<span class="token operator">></span> measurements <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">LinkedList</span><span class="token operator">&lt;</span>org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>Measurements<span class="token operator">></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\torg<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>Measurements measurement <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>Measurements</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t\n\t\tmeasurement<span class="token punctuation">.</span><span class="token function">setTimestamp</span><span class="token punctuation">(</span>odt<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token comment">//values</span>\n\t\torg<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>SeriesMap seriesMap <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>SeriesMap</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tseriesMap<span class="token punctuation">.</span><span class="token function">setSeriesValue</span><span class="token punctuation">(</span><span class="token string">"curentCurve"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getCurrentCurve</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tseriesMap<span class="token punctuation">.</span><span class="token function">setSeriesValue</span><span class="token punctuation">(</span><span class="token string">"voltageCurve"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getVoltageCurve</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tseriesMap<span class="token punctuation">.</span><span class="token function">setSeriesValue</span><span class="token punctuation">(</span><span class="token string">"forceCurve"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getForceCurve</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t\n\t\tmeasurement<span class="token punctuation">.</span><span class="token function">setSeriesMap</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tmeasurements<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span>measurement<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\twrapper<span class="token punctuation">.</span><span class="token function">setMeasurements</span><span class="token punctuation">(</span>measurements<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t\n\t\t<span class="token keyword">return</span> wrapper<span class="token punctuation">;</span>\n\t<span class="token punctuation">}</span>\n\n\t<span class="token keyword">private</span> MeasurementsWrapper <span class="token function">transformMeasurement</span><span class="token punctuation">(</span>PSI6000DataType doc<span class="token punctuation">)</span> <span class="token punctuation">{</span>\n\t\tMeasurementsWrapper wrapper <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">MeasurementsWrapper</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tWeldLog wl <span class="token operator">=</span> doc<span class="token punctuation">.</span><span class="token function">getMessage</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getWeldLog</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token comment">// device</span>\n\t\tDevice device <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Device</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tdevice<span class="token punctuation">.</span><span class="token function">setDeviceID</span><span class="token punctuation">(</span>doc<span class="token punctuation">.</span><span class="token function">getMessage</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getWeldLog</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTimerName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">setSpotName</span><span class="token punctuation">(</span>device<span class="token punctuation">,</span> wl<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\twrapper<span class="token punctuation">.</span><span class="token function">setDevice</span><span class="token punctuation">(</span>device<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token comment">// part</span>\n\t\tString partId <span class="token operator">=</span> wl<span class="token punctuation">.</span><span class="token function">getPartIdentString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token keyword">if</span> <span class="token punctuation">(</span>partId <span class="token operator">!=</span> null <span class="token operator">&amp;&amp;</span> partId<span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>\n\t\t\torg<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>Part part <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>Part</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t\tpart<span class="token punctuation">.</span><span class="token function">setPartID</span><span class="token punctuation">(</span>partId<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t\twrapper<span class="token punctuation">.</span><span class="token function">setPart</span><span class="token punctuation">(</span>part<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token punctuation">}</span>\n\n\t\t<span class="token comment">// measurements</span>\n\t\tList<span class="token operator">&lt;</span>org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>Measurements<span class="token operator">></span> measurements <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">LinkedList</span><span class="token operator">&lt;</span>org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>Measurements<span class="token operator">></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\torg<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>Measurements measurement <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>Measurements</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\tmeasurement<span class="token punctuation">.</span><span class="token function">setTimestamp</span><span class="token punctuation">(</span>OffsetDateTime<span class="token punctuation">.</span><span class="token function">of</span><span class="token punctuation">(</span>wl<span class="token punctuation">.</span><span class="token function">getDateTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> ZoneOffset<span class="token punctuation">.</span>UTC<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token comment">// values</span>\n\t\torg<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>SeriesMap seriesMap <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>SeriesMap</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tseriesMap<span class="token punctuation">.</span><span class="token function">setSeriesValue</span><span class="token punctuation">(</span><span class="token string">"$_time"</span><span class="token punctuation">,</span> Arrays<span class="token punctuation">.</span><span class="token function">asList</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"wear"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWear</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"wearPerCent"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWearPerCent</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"monitorState"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getMonitorState</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regulationState"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegulationState</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"measureState"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getMeasureState</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"powerState"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getPowerState</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sequenceState"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSequenceState</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sequenceStateAdd"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSequenceStateAdd</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sequenceRepeat"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSequenceRepeat</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"monitorMode"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getMonitorMode</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"iDemandStd"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getIDemandStd</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"ilsts"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getIlsts</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regulationStd"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegulationStd</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"iDemand1"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getIDemand1</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"iActual1"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getIActual1</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regulation1"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegulation1</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"iDemand2"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getIDemand2</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"iActual2"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getIActual2</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regulation2"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegulation2</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"iDemand3"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getIDemand3</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"iActual3"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getIActual3</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regulation3"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegulation3</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"phaStd"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getPhaStd</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"pha1"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getPha1</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"pha2"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getPha2</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"pha3"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getPha3</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"t_iDemandStd"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getIDemandStd</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"tActualStd"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getTActualStd</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token comment">// addMeasurementPoint(seriesMap, "partIdentString",</span>\n\t\t<span class="token comment">// wl.getPartIdentString());</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"tipDressCounter"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getTipDressCounter</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"electrodeNo"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getElectrodeNo</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgForceSetPoint"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgForceSetPoint</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgSheetThicknessSetPoint"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgSheetThicknessSetPoint</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgSagGpSetPoint"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgSagGpSetPoint</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgSpotWithSg"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgSpotWithSg</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgMotorCurrent"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgMotorCurrent</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgMotorTemp"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgMotorTemp</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgForce"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgForce</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgSheetThickness"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgSheetThickness</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgSagGp"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgSagGp</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgSagGc"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgSagGc</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regUsrUspJunction"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegUsrUspJunction</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regUsrUspMax"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegUsrUspMax</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regSpotDiaActual"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegSpotDiaActual</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regSpotDiaMinDemand"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegSpotDiaMinDemand</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regSplashTime"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegSplashTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"nuggetDiameter"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getNuggetDiameter</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"usp"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUsp</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"normingTime"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getNormingTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regulationStartTime"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegulationStartTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"returnToConstantCurrent"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getReturnToConstantCurrent</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"declineUsp"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getDeclineUsp</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"offsetUsp"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getOffsetUsp</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"currentFactor"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getCurrentFactor</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"triggerTime"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getTriggerTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"xqrMeasuringActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getXqrMeasuringActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"xqrRegulationActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getXqrRegulationActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"xqrMonitoringActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getXqrMonitoringActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"xqrWeldTimeProlongationActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getXqrWeldTimeProlongationActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"voltageActualValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getVoltageActualValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"voltageRefValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getVoltageRefValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"currentActualValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getCurrentActualValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"currentReferenceValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getCurrentReferenceValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldTimeActualValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldTimeActualValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldTimeRefValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldTimeRefValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"energyActualValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getEnergyActualValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"energyRefValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getEnergyRefValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"powerActualValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getPowerActualValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"powerRefValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getPowerRefValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"resistanceActualValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getResistanceActualValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"resistanceRefValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getResistanceRefValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"pulseWidthActualValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getPulseWidthActualValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"pulseWidthRefValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getPulseWidthRefValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"stabilisationFactorActValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getStabilisationFactorActValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"stabilisationFactorRefValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getStabilisationFactorRefValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"thresholdStabilisationFactor"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getThresholdStabilisationFactor</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"wldEffectStabilisationFactor"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWldEffectStabilisationFactor</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uipActualValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUipActualValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uipRefValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUipRefValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirExpulsionTime"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirExpulsionTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirMeasuringActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirMeasuringActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirRegulationActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirRegulationActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirMonitoringActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirMonitoringActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirWeldTimeProlongationActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirWeldTimeProlongationActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirQStoppRefCntValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirQStoppRefCntValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirQStoppActCntValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirQStoppActCntValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirUipUpperTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirUipUpperTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirUipLowerTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirUipLowerTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirUipCondTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirUipCondTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirPsfLowerTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirPsfLowerTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirPsfCondTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirPsfCondTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_1"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP161</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_2"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP162</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_3"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP163</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_4"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP164</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_5"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP165</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP32_6"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP326</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_7"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP167</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_8"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP168</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_9"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP169</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_10"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP1610</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_11"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP1611</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP32_12"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP3212</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_13"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP1613</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_14"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP1614</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_15"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP1615</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_16"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP1616</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_17"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP1617</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP32_18"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP3218</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uipMonCondUpperTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUipMonCondUpperTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"fqfActualValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getFqfActualValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"fqfRefValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getFqfRefValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"fqfMonUpperTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getFqfMonUpperTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"fqfMonLowerTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getFqfMonLowerTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"fqfMonCondUpperTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getFqfMonCondUpperTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"fqfMonCondLowerTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getFqfMonCondLowerTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"fqfMeasuringActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getFqfMeasuringActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"xqrModeOff"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getXqrModeOff</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"reweldActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getReweldActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token comment">// addMeasurementPoint(seriesMap, "weldspotRefIdent",</span>\n\t\t<span class="token comment">// wl.getWeldspotRefIdent());</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sg_Torque_Gp"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgTorqueGp</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sg_Force_Corr"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgForceCorr</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sg_Weldspot_Geo_Wear"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgWeldspotGeoWear</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sg_Wear_Length"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgWearLength</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sg_Beam_UpArching"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgBeamUpArching</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\tmeasurement<span class="token punctuation">.</span><span class="token function">setSeriesMap</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tmeasurements<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span>measurement<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\twrapper<span class="token punctuation">.</span><span class="token function">setMeasurements</span><span class="token punctuation">(</span>measurements<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token keyword">return</span> wrapper<span class="token punctuation">;</span>\n\t<span class="token punctuation">}</span>\n<span class="token punctuation">}</span>\n</code></pre>\n<h1>Summary</h1>\n<p>It takes a while to understand the involved software components. Yet, once the set up is running, it gets much easier to adapt it to another Use Case. And another. The pattern of wiring protocols and transforming the payload is very similar. The involved frameworks are powerful enough to support many Use Cases. This article is supposed to show that there are simple possibilities to transform transport protocols and payloads, so that you can focus on addressing functional challenges.</p>\n',url:"/blog/2018/2/11/Transform-PPMP-with-camel",title:"PPMP Use Cases: Simple Transformation with Apache Camel",date:new Date(15183072e5),tags:["use cases"],prev:{url:"/blog/2018/1/26/New-website",title:"Updated Website"},next:{url:"/blog/2018/2/13/grinding-machine-scenario",title:"PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/c3e469380ccd51a92bb6.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"Transform-PPMP-with-camel",content:'<p>The Production Performance Management Protocol (PPMP) is a simple structure to send out machine data. Unide, as its hosting project, is supposed to provide exemplary implementations.</p>\n<p>We have already published <a href="https://github.com/eclipse/unide/tree/master/servers/rest">a REST server</a>, <a href="https://github.com/eclipse/unide.java">java-</a> and <a href="https://github.com/eclipse/unide.python">python-</a> bindings and an <a href="https://github.com/eclipse/unide/tree/master/clients/binsa">html5-client</a>. But how are these implementations used in real life?</p>\n<h1>The Challenge</h1>\n<div class="card figure">\n\t<div class="card-image">\n\t\t<figure class="image">\n\t\t\t<img alt="Welding robots" title="BMW plant, spot welding" src="/unide/images/blog/Transform-PPMP-with-camel-welding.jpg"></img>\n\t\t</figure>\n\t</div>\n\t<div class="card-content">\n\t\tBMW plant in Leipzig, Germany: Spot welding <a href="https://creativecommons.org/licenses/by-sa/2.0/de/deed.en">(CC BY-SA 2.0 DE)</a>\n\t</div>\n</div>\n<p>In the automotive industry, <a href="https://en.wikipedia.org/wiki/Spot_welding">welding spots</a> are crucial for the quality of a car and the security of the passenger. In modern production lines, hundreds of welding spots have to be precisely set in a single shift. In order to reduce product rework, scrap, destructible tests and machine downtime, the quality should be monitored consistently. That\'s what special welding controller in machines do. Unfortunately, this data is often only used locally, for a short period of time and in proprietary formats. Just enough to determine the immediate process outcome. In that case, further opportunities of analysing the information are not taken. With the continuous increase in complexity, price and time pressure, the demand for further processing and optimization grows. The data could be used to prevent or even predict maintenance or just store the data in long time archives in case of legal disputes.</p>\n<p>One prerequisite for such connectivity is the hardware and its connectivity. Older generations of welding controllers can only be accessed with proprietary stacks (like the <a href="https://www.boschrexroth.com/en/xc/products/product-groups/welding-technology/controllers-with-power-section/mf-system-psi6000/index">PSI 6000</a>) whereas newer generations (like the <a href="https://www.boschrexroth.com/en/xc/company/press/index2-29696">PRC 7000</a>) are much more flexible in terms of networking and communication. In general, there are two aspects that make up the communication: the transport protocol and the structure of the payload. This is similar to our daily life: if you want to chat with your friends, you need to use the same messenger or communication technology (phone, email) and you need speak the same language (English, German etc.).</p>\n<p>In the following sections, let\'s assume we need to transform the transport protocol as well as the payload. The data is generated by a welding controller and should be passed to <a href="https://unide.eclipse.org">the unide REST server</a> for persisting it in a dedicated timeseries database.</p>\n<h1>The Approach</h1>\n<p>We want to find a way to receive the data, transform it into Production Performance Management Protocol and store it into a database in our <a href="https://unide.eclipse.org">REST Server</a>.</p>\n<p>First, we need to understand which interfaces the controller has, which communication protocol is used, and how the payload would be interpreted. In the case of the PSI 6000, it was configured to publish the quality data to a <a href="https://de.wikipedia.org/wiki/MQTT">mqtt</a> message broker (here: <a href="https://mosquitto.org/">Eclipse mosquitto</a>). We don\'t have an extensive documentation of the payload, but we can look at samples of it (some Curve data shortened at the end):</p>\n<pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>\n  <span class="token property">"Name"</span><span class="token operator">:</span> <span class="token string">"WeldLog/UIR Testrack 24/"</span><span class="token punctuation">,</span>\n  <span class="token property">"WeldTimer"</span><span class="token operator">:</span> <span class="token string">"UIR Testrack 24"</span><span class="token punctuation">,</span>\n  <span class="token property">"TimeStamp"</span><span class="token operator">:</span> <span class="token string">"2018-01-17T10:41:00.0008436+01:00"</span><span class="token punctuation">,</span>\n  <span class="token property">"OutputFormat"</span><span class="token operator">:</span> <span class="token string">"JSON"</span><span class="token punctuation">,</span>\n  <span class="token property">"Message"</span><span class="token operator">:</span> <span class="token punctuation">{</span>\n    <span class="token property">"WeldLog"</span><span class="token operator">:</span> <span class="token punctuation">{</span>\n      <span class="token property">"protRecord_ID"</span><span class="token operator">:</span> <span class="token number">734827</span><span class="token punctuation">,</span>\n      <span class="token property">"dateTime"</span><span class="token operator">:</span> <span class="token string">"2018-01-15T16:52:32.09"</span><span class="token punctuation">,</span>\n      <span class="token property">"timerName"</span><span class="token operator">:</span> <span class="token string">"UIR Testrack 24"</span><span class="token punctuation">,</span>\n      <span class="token property">"progNo"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"spotName"</span><span class="token operator">:</span> <span class="token string">""</span><span class="token punctuation">,</span>\n      <span class="token property">"wear"</span><span class="token operator">:</span> <span class="token number">8312480</span><span class="token punctuation">,</span>\n      <span class="token property">"wearPerCent"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"monitorState"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"regulationState"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"measureState"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"powerState"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"sequenceState"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"sequenceStateAdd"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"sequenceRepeat"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"monitorMode"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>\n      <span class="token property">"iDemandStd"</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>\n      <span class="token property">"ilsts"</span><span class="token operator">:</span> <span class="token number">13.14</span><span class="token punctuation">,</span>\n      <span class="token property">"regulationStd"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"iDemand1"</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>\n      <span class="token property">"iActual1"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"regulation1"</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span>\n      <span class="token property">"iDemand2"</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>\n      <span class="token property">"iActual2"</span><span class="token operator">:</span> <span class="token number">13.16</span><span class="token punctuation">,</span>\n      <span class="token property">"regulation2"</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span>\n      <span class="token property">"iDemand3"</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>\n      <span class="token property">"iActual3"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"regulation3"</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span>\n      <span class="token property">"phaStd"</span><span class="token operator">:</span> <span class="token number">24.96</span><span class="token punctuation">,</span>\n      <span class="token property">"pha1"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"pha2"</span><span class="token operator">:</span> <span class="token number">24.64</span><span class="token punctuation">,</span>\n      <span class="token property">"pha3"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"t_iDemandStd"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"tActualStd"</span><span class="token operator">:</span> <span class="token number">878</span><span class="token punctuation">,</span>\n      <span class="token property">"partIdentString"</span><span class="token operator">:</span> <span class="token string">""</span><span class="token punctuation">,</span>\n      <span class="token property">"tipDressCounter"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"electrodeNo"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"sgForceSetPoint"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sgSheetThicknessSetPoint"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sgSagGpSetPoint"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sgSpotWithSg"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sgMotorCurrent"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sgMotorTemp"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sgForce"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sgSheetThickness"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sgSagGp"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sgSagGc"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"regUsrUspJunction"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"regUsrUspMax"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"regSpotDiaActual"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"regSpotDiaMinDemand"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"regSplashTime"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"nuggetDiameter"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"usp"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"normingTime"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"regulationStartTime"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"returnToConstantCurrent"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"declineUsp"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"offsetUsp"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"currentFactor"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"triggerTime"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"xqrMeasuringActive"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"xqrRegulationActive"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"xqrMonitoringActive"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"xqrWeldTimeProlongationActive"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"voltageActualValue"</span><span class="token operator">:</span> <span class="token number">0.03</span><span class="token punctuation">,</span>\n      <span class="token property">"voltageRefValue"</span><span class="token operator">:</span> <span class="token number">0.03</span><span class="token punctuation">,</span>\n      <span class="token property">"currentActualValue"</span><span class="token operator">:</span> <span class="token number">13.17</span><span class="token punctuation">,</span>\n      <span class="token property">"currentReferenceValue"</span><span class="token operator">:</span> <span class="token number">13.95</span><span class="token punctuation">,</span>\n      <span class="token property">"weldTimeActualValue"</span><span class="token operator">:</span> <span class="token number">876</span><span class="token punctuation">,</span>\n      <span class="token property">"weldTimeRefValue"</span><span class="token operator">:</span> <span class="token number">760</span><span class="token punctuation">,</span>\n      <span class="token property">"energyActualValue"</span><span class="token operator">:</span> <span class="token number">395.1261</span><span class="token punctuation">,</span>\n      <span class="token property">"energyRefValue"</span><span class="token operator">:</span> <span class="token number">342</span><span class="token punctuation">,</span>\n      <span class="token property">"powerActualValue"</span><span class="token operator">:</span> <span class="token number">395.133</span><span class="token punctuation">,</span>\n      <span class="token property">"powerRefValue"</span><span class="token operator">:</span> <span class="token number">449.35</span><span class="token punctuation">,</span>\n      <span class="token property">"resistanceActualValue"</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>\n      <span class="token property">"resistanceRefValue"</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>\n      <span class="token property">"pulseWidthActualValue"</span><span class="token operator">:</span> <span class="token number">25.02</span><span class="token punctuation">,</span>\n      <span class="token property">"pulseWidthRefValue"</span><span class="token operator">:</span> <span class="token number">26.19</span><span class="token punctuation">,</span>\n      <span class="token property">"stabilisationFactorActValue"</span><span class="token operator">:</span> <span class="token number">55</span><span class="token punctuation">,</span>\n      <span class="token property">"stabilisationFactorRefValue"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"thresholdStabilisationFactor"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"wldEffectStabilisationFactor"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"uipActualValue"</span><span class="token operator">:</span> <span class="token number">126</span><span class="token punctuation">,</span>\n      <span class="token property">"uipRefValue"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"uirExpulsionTime"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"uirMeasuringActive"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>\n      <span class="token property">"uirRegulationActive"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>\n      <span class="token property">"uirMonitoringActive"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"uirWeldTimeProlongationActive"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>\n      <span class="token property">"uirQStoppRefCntValue"</span><span class="token operator">:</span> <span class="token number">9</span><span class="token punctuation">,</span>\n      <span class="token property">"uirQStoppActCntValue"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"uirUipUpperTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"uirUipLowerTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"uirUipCondTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"uirPsfLowerTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"uirPsfCondTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_1"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_2"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_3"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_4"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_5"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP32_6"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_7"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_8"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_9"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_10"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_11"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP32_12"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_13"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_14"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_15"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_16"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP16_17"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"weldSpotCustDataP32_18"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"uipMonCondUpperTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"fqfActualValue"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"fqfRefValue"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"fqfMonUpperTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"fqfMonLowerTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"fqfMonCondUpperTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"fqfMonCondLowerTol"</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>\n      <span class="token property">"fqfMeasuringActive"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"xqrModeOff"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"reweldActive"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>\n      <span class="token property">"weldspotRefIdent"</span><span class="token operator">:</span> <span class="token string">"UIR_PART"</span><span class="token punctuation">,</span>\n      <span class="token property">"sg_Torque_Gp"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sg_Force_Corr"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sg_Weldspot_Geo_Wear"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sg_Wear_Length"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"sg_Beam_UpArching"</span><span class="token operator">:</span> <span class="token null">null</span><span class="token punctuation">,</span>\n      <span class="token property">"CurrentCurve"</span><span class="token operator">:</span> <span class="token punctuation">[</span>\n        <span class="token number">11621</span><span class="token punctuation">,</span>\n        <span class="token number">15434</span><span class="token punctuation">,</span>\n        ...\n      <span class="token punctuation">]</span><span class="token punctuation">,</span>\n      <span class="token property">"VoltageCurve"</span><span class="token operator">:</span> <span class="token punctuation">[</span>\n        <span class="token number">39</span><span class="token punctuation">,</span>\n        <span class="token number">29</span><span class="token punctuation">,</span>\n        ...\n      <span class="token punctuation">]</span><span class="token punctuation">,</span>\n      <span class="token property">"ForceCurve"</span><span class="token operator">:</span> <span class="token punctuation">[</span>\n        <span class="token number">49</span><span class="token punctuation">,</span>\n        <span class="token number">49</span><span class="token punctuation">,</span>\n        ...\n      <span class="token punctuation">]</span>\n    <span class="token punctuation">}</span>\n  <span class="token punctuation">}</span>\n<span class="token punctuation">}</span>\n</code></pre>\n<p>That\'s already very detailed, but it\'s unclear which device / welding spot the data comes from and what the timing of the curves was. Let\'s get some more structure in with PPMP!</p>\n<p>In the Production Performance Management Protocol, we have the option to differentiate between discrete manufacturing data (MES - part produced) by using the <a href="/unide/specification/measurement-message">measurement-message</a> and detailed process data by using the <a href="https://www.eclipse.org/unide/specification/process-message">process-message</a>. In the welding payload, that\'s all combined in one message. So we also want to split this payload into two.</p>\n<h2>Introducing Apache Camel</h2>\n<div class="card figure is-pulled-left">\n\t<div class="card-image">\n\t\t<figure class="image">\n\t\t\t<img alt="Apache Camel" title="Apache Camel" src="/unide/images/blog/Transform-PPMP-with-camel-camel.png"></img>\n\t\t</figure>\n\t</div>\n\t<div class="card-content">\n\t\tApache Camel, <a href="https://www.apache.org/licenses/LICENSE-2.0">(Apache&nbsp;License&nbsp;2.0)</a>\n\t</div>\n</div>\n<p><a href="https://en.wikipedia.org/wiki/Apache_Camel">Apache Camel</a> is a java-based Open Source framework, that can transform and route data. It supports most of the <a href="https://en.wikipedia.org/wiki/Enterprise_Integration_Patterns">Enterprise Integration Patterns</a> and hundreds(!) of <a href="http://camel.apache.org/components.html">connectors / components</a>. Think of it as an extensive transformation and workflow automation engine. In fact, it\'s so powerful and versatile, that it unfortunately doesn\'t come with a visual user interface or a plug-and-play installer. Luckily, for everyone who doesn\'t happen to be a java expert, there\'s also an xml configuration (via <a href="https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/xsd-configuration.html">spring xml</a>). And that\'s mostly all we need!</p>\n<h2>Transforming the Communication Protocol</h2>\n<p>We will use Spring XML to configure Apache Camel. The workflow in Camel are called <code>&lt;routes&gt;</code>. So let\'s create a route that transforms our mqtt to REST protocol:</p>\n<pre class="language-xml"><code class="language-xml"><span class="token prolog">&lt;?xml version="1.0" encoding="UTF-8"?></span>\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>beans</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://www.springframework.org/schema/beans<span class="token punctuation">"</span></span>\n\t<span class="token attr-name"><span class="token namespace">xmlns:</span>xsi</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://www.w3.org/2001/XMLSchema-instance<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>camel</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://camel.apache.org/schema/spring<span class="token punctuation">"</span></span>\n\t<span class="token attr-name"><span class="token namespace">xmlns:</span>util</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://www.springframework.org/schema/util<span class="token punctuation">"</span></span>\n\t<span class="token attr-name"><span class="token namespace">xsi:</span>schemaLocation</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://www.springframework.org/schema/util\n\thttp://www.springframework.org/schema/util/spring-util.xsd \n\thttp://www.springframework.org/schema/beans\n    http://www.springframework.org/schema/beans/spring-beans.xsd\n    http://camel.apache.org/schema/spring\n    http://camel.apache.org/schema/spring/camel-spring.xsd<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>camelContext</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://camel.apache.org/schema/spring<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>route</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>from</span>\n\t\t\t\t<span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>mqtt://psi6000?host=tcp://192.168.123.135:1883<span class="token entity" title="&amp;">&amp;amp;</span>subscribeTopicName=PSI6000//PROCESS/PPMP/PROCESS<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>to</span>\n\t\t\t\t<span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>jetty:http://unide.eclipse.org:8080/rest/v2/measurement?bridgeEndpoint=true<span class="token entity" title="&amp;">&amp;amp;</span>throwExceptionOnFailure=true<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>route</span><span class="token punctuation">></span></span>\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>camelContext</span><span class="token punctuation">></span></span>\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>beans</span><span class="token punctuation">></span></span>\n</code></pre>\n<p>That\'s it! A <code>&lt;route&gt;</code> that reads<code>&lt;from&gt;</code> mqtt and forwards <code>&lt;to&gt;</code> http. Not so difficult, is it? We could use many of the other <a href="http://camel.apache.org/components.html">connectors / components</a> in the example above as well to transform from/to different protocols.</p>\n<p>But wait! The welding payload above was not Production Performance Management Protocol. So we also need to normalize the payload.</p>\n<h2>Normalizing the Payload</h2>\n<p>Now that we can easily convert protocols, let\'s address the structure of the payload. Overall, we want to have a workflow that looks as described in the diagram below:</p>\n<div class="card figure">\n\t<div class="card-image">\n\t\t<figure class="image">\n\t\t\t<img alt="data workflow" title="data workflow" src="/unide/images/blog/Transform-PPMP-with-camel-1.svg"></img>\n\t\t</figure>\n\t</div>\n\t<div class="card-content">\n\t\tWorkflow to extract the data from controller, convert it and send the data to the cloud application\n\t</div>\n</div>\n<p>The extra steps here are:</p>\n<ol>\n<li>transform the PSI 6000 JSON String payload to a java object</li>\n<li>transform the PSI 6000 java object to two Production Performance Management Protocol-java objects (<a href="/unide/specification/measurement-message">measurement-message</a> and <a href="https://www.eclipse.org/unide/specification/process-message">process-message</a>)</li>\n<li>split up the two Production Performance Management Protocol objects</li>\n<li>route the objects individually</li>\n<li>transform each Production Performance Management Protocol object back to a String</li>\n</ol>\n<h3>Create the PSI 6000 Java Object</h3>\n<p>Luckily, there are helpers for transforming json (or xml) to plain old java objects (POJOs). We are using <a href="http://www.jsonschema2pojo.org/">jsonschema2pojo</a> to convert the above json sample to POJOs with Jackson 2.x annotation. I name the resulting data type class <code>PSI6000DataType</code> and organize it in the package <code>org.eclipse.iot.unide.integrators</code>. Based on the given testdata, jsonschema2pojo cannot fully deduct all attribute types correctly. In order to allow floating point values, we would rename all <code>Integer</code> and <code>Object</code> types to <code>Number</code> in the WeldLog.java file. Also in the same file, we would change the type of the <code>dateTime</code> field from String to <code>LocalDateTime</code> to be more accurate:</p>\n<pre class="language-java"><code class="language-java"><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>\n<span class="token annotation punctuation">@JsonProperty</span><span class="token punctuation">(</span><span class="token string">"dateTime"</span><span class="token punctuation">)</span>\n<span class="token annotation punctuation">@JsonSerialize</span><span class="token punctuation">(</span>using <span class="token operator">=</span> LocalDateTimeSerializer<span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span>\n<span class="token annotation punctuation">@JsonDeserialize</span><span class="token punctuation">(</span>using <span class="token operator">=</span> LocalDateTimeDeserializer<span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span>\n<span class="token keyword">private</span> LocalDateTime dateTime<span class="token punctuation">;</span>\n<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>\n</code></pre>\n<p>For that, we also need to include the respective imports:</p>\n<pre class="language-java"><code class="language-java"><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>\n<span class="token keyword">import</span> com<span class="token punctuation">.</span>fasterxml<span class="token punctuation">.</span>jackson<span class="token punctuation">.</span>databind<span class="token punctuation">.</span>annotation<span class="token punctuation">.</span>JsonDeserialize<span class="token punctuation">;</span>\n<span class="token keyword">import</span> com<span class="token punctuation">.</span>fasterxml<span class="token punctuation">.</span>jackson<span class="token punctuation">.</span>databind<span class="token punctuation">.</span>annotation<span class="token punctuation">.</span>JsonSerialize<span class="token punctuation">;</span>\n<span class="token keyword">import</span> com<span class="token punctuation">.</span>fasterxml<span class="token punctuation">.</span>jackson<span class="token punctuation">.</span>datatype<span class="token punctuation">.</span>jsr310<span class="token punctuation">.</span>deser<span class="token punctuation">.</span>LocalDateTimeDeserializer<span class="token punctuation">;</span>\n<span class="token keyword">import</span> com<span class="token punctuation">.</span>fasterxml<span class="token punctuation">.</span>jackson<span class="token punctuation">.</span>datatype<span class="token punctuation">.</span>jsr310<span class="token punctuation">.</span>ser<span class="token punctuation">.</span>LocalDateTimeSerializer<span class="token punctuation">;</span>\n<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>\n</code></pre>\n<p>and adjust the getter (<code>getDateTime()</code>), setter (<code>setDateTime()</code>) and the type in the constructor (<code>public WeldLog(...)</code>) accordingly.</p>\n<p>Camel will be able to transform (&quot;<em>unmarshal</em>&quot;) this datatype from a string to a POJO after adding the definition to the above Spring XML:</p>\n<pre class="language-xml"><code class="language-xml">...\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>camelContext</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://camel.apache.org/schema/spring<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>dataFormats</span><span class="token punctuation">></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>json</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>psi6000<span class="token punctuation">"</span></span> <span class="token attr-name">library</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Jackson<span class="token punctuation">"</span></span>\n\t\t\t<span class="token attr-name">unmarshalTypeName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>org.eclipse.iot.unide.integrators.PSI6000DataType<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>dataFormats</span><span class="token punctuation">></span></span>\n\t...\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>camelContext</span><span class="token punctuation">></span></span>\n</code></pre>\n<h3>Use unide.java binding for Production Performance Management Protocol Java Objects</h3>\n<p>For eventually transforming the Production Performance Management Protocol objects back to String (&quot;<em>marshal</em>&quot;), we can make use of the <a href="https://github.com/eclipse/unide.java">unide Production Performance Management Protocol java binding</a>. Just adjust the dataFormats section of the Spring XML so that it reads:</p>\n<pre class="language-xml"><code class="language-xml">...\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>camelContext</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://camel.apache.org/schema/spring<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>dataFormats</span><span class="token punctuation">></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>json</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>psi6000<span class="token punctuation">"</span></span> <span class="token attr-name">library</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Jackson<span class="token punctuation">"</span></span>\n\t\t\t<span class="token attr-name">unmarshalTypeName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>org.eclipse.iot.unide.integrators.PSI6000DataType<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>json</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>ppmpMeasurementMessage<span class="token punctuation">"</span></span> <span class="token attr-name">library</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Jackson<span class="token punctuation">"</span></span>\n\t\t\t<span class="token attr-name">unmarshalTypeName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>org.eclipse.iot.unide.ppmp.measurements.MeasurementsWrapper<span class="token punctuation">"</span></span>\n\t\t\t<span class="token attr-name">moduleClassNames</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>com.fasterxml.jackson.datatype.jsr310.JavaTimeModule<span class="token punctuation">"</span></span>\n\t\t\t<span class="token attr-name">disableFeatures</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>WRITE_DATES_AS_TIMESTAMPS<span class="token punctuation">"</span></span> \n\t\t\t<span class="token attr-name">include</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>NON_NULL<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>json</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>ppmpProcessMessage<span class="token punctuation">"</span></span> <span class="token attr-name">library</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Jackson<span class="token punctuation">"</span></span>\n\t\t\t<span class="token attr-name">unmarshalTypeName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>org.eclipse.iot.unide.ppmp.process.ProcessWrapper<span class="token punctuation">"</span></span>\n\t\t\t<span class="token attr-name">moduleClassNames</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>com.fasterxml.jackson.datatype.jsr310.JavaTimeModule<span class="token punctuation">"</span></span>\n\t\t\t<span class="token attr-name">disableFeatures</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>WRITE_DATES_AS_TIMESTAMPS<span class="token punctuation">"</span></span>\n\t\t\t<span class="token attr-name">include</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>NON_NULL<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>dataFormats</span><span class="token punctuation">></span></span>\n\t...\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>camelContext</span><span class="token punctuation">></span></span>\n</code></pre>\n<h3>Create the Workflow</h3>\n<p>In order to better structure data flow, we use multiple <code>&lt;route&gt;</code>-s: one for retrieving the data and two more after the split of the payload. They are connected via the virtual camel protocol &quot;<em>direct</em>&quot;. In the following Spring XML, you can also find some <code>&lt;log&gt;</code> points and additional steps to set http header (<code>&lt;setHeader&gt;</code>) for posting to the unide server:</p>\n<pre class="language-xml"><code class="language-xml"><span class="token prolog">&lt;?xml version="1.0" encoding="UTF-8"?></span>\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>beans</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://www.springframework.org/schema/beans<span class="token punctuation">"</span></span>\n\t<span class="token attr-name"><span class="token namespace">xmlns:</span>xsi</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://www.w3.org/2001/XMLSchema-instance<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>camel</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://camel.apache.org/schema/spring<span class="token punctuation">"</span></span>\n\t<span class="token attr-name"><span class="token namespace">xmlns:</span>util</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://www.springframework.org/schema/util<span class="token punctuation">"</span></span>\n\t<span class="token attr-name"><span class="token namespace">xsi:</span>schemaLocation</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://www.springframework.org/schema/util\n\thttp://www.springframework.org/schema/util/spring-util.xsd \n\thttp://www.springframework.org/schema/beans\n    http://www.springframework.org/schema/beans/spring-beans.xsd\n    http://camel.apache.org/schema/spring\n    http://camel.apache.org/schema/spring/camel-spring.xsd<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>bean</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>psi6000-to-ppmp<span class="token punctuation">"</span></span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>org.eclipse.iot.unide.integrators.PSI6000<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>bean</span><span class="token punctuation">></span></span>\n\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>camelContext</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://camel.apache.org/schema/spring<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>dataFormats</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>json</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>psi6000<span class="token punctuation">"</span></span> <span class="token attr-name">library</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Jackson<span class="token punctuation">"</span></span>\n\t\t\t\t<span class="token attr-name">unmarshalTypeName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>org.eclipse.iot.unide.integrators.PSI6000DataType<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>json</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>ppmpMeasurementMessage<span class="token punctuation">"</span></span> <span class="token attr-name">library</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Jackson<span class="token punctuation">"</span></span>\n\t\t\t\t<span class="token attr-name">unmarshalTypeName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>org.eclipse.iot.unide.ppmp.measurements.MeasurementsWrapper<span class="token punctuation">"</span></span>\n\t\t\t\t<span class="token attr-name">moduleClassNames</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>com.fasterxml.jackson.datatype.jsr310.JavaTimeModule<span class="token punctuation">"</span></span>\n\t\t\t\t<span class="token attr-name">disableFeatures</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>WRITE_DATES_AS_TIMESTAMPS<span class="token punctuation">"</span></span> <span class="token attr-name">include</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>NON_NULL<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>json</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>ppmpProcessMessage<span class="token punctuation">"</span></span> <span class="token attr-name">library</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Jackson<span class="token punctuation">"</span></span>\n\t\t\t\t<span class="token attr-name">unmarshalTypeName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>org.eclipse.iot.unide.ppmp.process.ProcessWrapper<span class="token punctuation">"</span></span>\n\t\t\t\t<span class="token attr-name">moduleClassNames</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>com.fasterxml.jackson.datatype.jsr310.JavaTimeModule<span class="token punctuation">"</span></span>\n\t\t\t\t<span class="token attr-name">disableFeatures</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>WRITE_DATES_AS_TIMESTAMPS<span class="token punctuation">"</span></span> <span class="token attr-name">include</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>NON_NULL<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>dataFormats</span><span class="token punctuation">></span></span>\n\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>route</span> <span class="token attr-name">autoStartup</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>true<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>from</span>\n\t\t\t\t<span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>mqtt://psi6000?host=tcp://192.168.123.135:1883<span class="token entity" title="&amp;">&amp;amp;</span>subscribeTopicName=PSI6000//PROCESS/PPMP/PROCESS<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>unmarshal</span> <span class="token attr-name">ref</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>psi6000<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>bean</span> <span class="token attr-name">ref</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>psi6000-to-ppmp<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>setHeader</span> <span class="token attr-name">headerName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Content-Type<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>constant</span><span class="token punctuation">></span></span>application/json; charset=utf-8<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>constant</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>setHeader</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>setHeader</span> <span class="token attr-name">headerName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>CamelHttpMethod<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>constant</span><span class="token punctuation">></span></span>POST<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>constant</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>setHeader</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>multicast</span><span class="token punctuation">></span></span>\n\t\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>to</span> <span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>direct:measurement<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>to</span> <span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>direct:process<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>multicast</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>log</span> <span class="token attr-name">message</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>done<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>setBody</span><span class="token punctuation">></span></span>\n\t\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>simple</span><span class="token punctuation">></span></span>{"result": true }<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>simple</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>setBody</span><span class="token punctuation">></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>route</span><span class="token punctuation">></span></span>\n\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>route</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>from</span> <span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>direct:measurement<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>setBody</span><span class="token punctuation">></span></span>\n\t\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>simple</span><span class="token punctuation">></span></span>${body[0]}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>simple</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>setBody</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>log</span> <span class="token attr-name">message</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>deviceId measurement: ${body.device.deviceID}<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>marshal</span> <span class="token attr-name">ref</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>ppmpMeasurementMessage<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>log</span> <span class="token attr-name">message</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>sending measurement<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>setHeader</span> <span class="token attr-name">headerName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Content-Length<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>simple</span><span class="token punctuation">></span></span>body.length<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>simple</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>setHeader</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>to</span>\n\t\t\t\t<span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>jetty:http://unide.eclipse.org:8080/rest/v2/measurement?bridgeEndpoint=true<span class="token entity" title="&amp;">&amp;amp;</span>throwExceptionOnFailure=true<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>log</span> <span class="token attr-name">message</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>measurement sent<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>route</span><span class="token punctuation">></span></span>\n\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>route</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>from</span> <span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>direct:process<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>setBody</span><span class="token punctuation">></span></span>\n\t\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>simple</span><span class="token punctuation">></span></span>${body[1]}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>simple</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>setBody</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>log</span> <span class="token attr-name">message</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>deviceId process: ${body.device.deviceID}<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>marshal</span> <span class="token attr-name">ref</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>ppmpProcessMessage<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>log</span> <span class="token attr-name">message</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>sending process<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>setHeader</span> <span class="token attr-name">headerName</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Content-Length<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>simple</span><span class="token punctuation">></span></span>body.length<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>simple</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>setHeader</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>to</span>\n\t\t\t\t<span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>jetty:http://unide.eclipse.org:8080/rest/v2/process?bridgeEndpoint=true<span class="token entity" title="&amp;">&amp;amp;</span>throwExceptionOnFailure=true<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>log</span> <span class="token attr-name">message</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>process sent<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>route</span><span class="token punctuation">></span></span>\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>camelContext</span><span class="token punctuation">></span></span>\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>beans</span><span class="token punctuation">></span></span>\n</code></pre>\n<p>You might have noticed that we have not yet discussed one important item in this workflow: how do we actually transform the payload from one format to another?</p>\n<h3>Transforming from PSI 6000 POJO to Production Performance Management Protocol POJOs</h3>\n<p>One thing that we\'ll hardwire as java code is the transformation from the source to the target structure. The same functionality could be achieved with scripting components (e.g. <a href="http://camel.apache.org/groovy.html">groovy</a>, but that would be less powerful and worse performance. Since we don\'t expect the format to change but mostly the workflow or endpoints, implementing a java bean is not too much effort. Here\'s how:<br>\nApache Camel offers a <code>Processor</code> interface that can be used to override the <code>process()</code> function. This function receives the complete message (<code>exchange</code>) and can modify it in any way. Since we have created the PSI 6000 Java Object already and want to produce Production Performance Management Protocol java objects, the logic is mostly about creating the child objects and wiring the suitable getter to corresponding setter.</p>\n<pre class="language-java"><code class="language-java"><span class="token keyword">package</span> org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>integrators<span class="token punctuation">;</span>\n\n<span class="token keyword">import</span> java<span class="token punctuation">.</span>time<span class="token punctuation">.</span>OffsetDateTime<span class="token punctuation">;</span>\n<span class="token keyword">import</span> java<span class="token punctuation">.</span>time<span class="token punctuation">.</span>ZoneOffset<span class="token punctuation">;</span>\n<span class="token keyword">import</span> java<span class="token punctuation">.</span>util<span class="token punctuation">.</span>Arrays<span class="token punctuation">;</span>\n<span class="token keyword">import</span> java<span class="token punctuation">.</span>util<span class="token punctuation">.</span>LinkedList<span class="token punctuation">;</span>\n<span class="token keyword">import</span> java<span class="token punctuation">.</span>util<span class="token punctuation">.</span>List<span class="token punctuation">;</span>\n\n<span class="token keyword">import</span> org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>camel<span class="token punctuation">.</span>Exchange<span class="token punctuation">;</span>\n<span class="token keyword">import</span> org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>camel<span class="token punctuation">.</span>Message<span class="token punctuation">;</span>\n<span class="token keyword">import</span> org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>camel<span class="token punctuation">.</span>Processor<span class="token punctuation">;</span>\n<span class="token keyword">import</span> org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>commons<span class="token punctuation">.</span>Device<span class="token punctuation">;</span>\n<span class="token keyword">import</span> org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>commons<span class="token punctuation">.</span>MetaData<span class="token punctuation">;</span>\n<span class="token keyword">import</span> org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>MeasurementsWrapper<span class="token punctuation">;</span>\n<span class="token keyword">import</span> org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>Process<span class="token punctuation">;</span>\n<span class="token keyword">import</span> org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>ProcessWrapper<span class="token punctuation">;</span>\n\n<span class="token keyword">import</span> com<span class="token punctuation">.</span>fasterxml<span class="token punctuation">.</span>jackson<span class="token punctuation">.</span>core<span class="token punctuation">.</span>JsonProcessingException<span class="token punctuation">;</span>\n\n<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">PSI6000</span> <span class="token keyword">implements</span> <span class="token class-name">Processor</span> <span class="token punctuation">{</span>\n\n\t<span class="token keyword">public</span> <span class="token function">PSI6000</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>\n\n\t<span class="token keyword">private</span> org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>SeriesMap <span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>\n\t\t\torg<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>SeriesMap map<span class="token punctuation">,</span> String name<span class="token punctuation">,</span> Number value<span class="token punctuation">)</span> <span class="token punctuation">{</span>\n\t\t<span class="token keyword">if</span> <span class="token punctuation">(</span>value <span class="token operator">!=</span> null<span class="token punctuation">)</span> <span class="token punctuation">{</span>\n\t\t\tmap<span class="token punctuation">.</span><span class="token function">setSeriesValue</span><span class="token punctuation">(</span>name<span class="token punctuation">,</span> Arrays<span class="token punctuation">.</span><span class="token function">asList</span><span class="token punctuation">(</span>value<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token punctuation">}</span>\n\t\t<span class="token keyword">return</span> map<span class="token punctuation">;</span>\n\t<span class="token punctuation">}</span>\n\n\t<span class="token annotation punctuation">@Override</span>\n\t<span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">process</span><span class="token punctuation">(</span>Exchange exchange<span class="token punctuation">)</span> <span class="token keyword">throws</span> JsonProcessingException<span class="token punctuation">,</span> Exception <span class="token punctuation">{</span>\n\t\tMessage msg <span class="token operator">=</span> exchange<span class="token punctuation">.</span><span class="token function">getIn</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tPSI6000DataType doc <span class="token operator">=</span> msg<span class="token punctuation">.</span><span class="token function">getBody</span><span class="token punctuation">(</span>PSI6000DataType<span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\tObject <span class="token punctuation">[</span><span class="token punctuation">]</span>bundle <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Object</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">;</span>\n\t\tbundle<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span>       <span class="token operator">=</span> <span class="token function">transformMeasurement</span><span class="token punctuation">(</span>doc<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tbundle<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span>       <span class="token operator">=</span> <span class="token function">transformProcess</span><span class="token punctuation">(</span>doc<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tmsg<span class="token punctuation">.</span><span class="token function">setBody</span><span class="token punctuation">(</span>bundle<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\texchange<span class="token punctuation">.</span><span class="token function">setOut</span><span class="token punctuation">(</span>msg<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t<span class="token punctuation">}</span>\n\n\t<span class="token keyword">private</span> <span class="token keyword">void</span> <span class="token function">setSpotName</span><span class="token punctuation">(</span>Device device<span class="token punctuation">,</span> WeldLog wl<span class="token punctuation">)</span> <span class="token punctuation">{</span>\n\t\tString spotName <span class="token operator">=</span> wl<span class="token punctuation">.</span><span class="token function">getSpotName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token keyword">if</span> <span class="token punctuation">(</span>spotName <span class="token operator">!=</span> null <span class="token operator">&amp;&amp;</span> spotName<span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>\n\t\t\tMetaData md <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">MetaData</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t\tmd<span class="token punctuation">.</span><span class="token function">setMetaDataValue</span><span class="token punctuation">(</span><span class="token string">"spotName"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSpotName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t\tdevice<span class="token punctuation">.</span><span class="token function">setMetaData</span><span class="token punctuation">(</span>md<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token punctuation">}</span>\n\t<span class="token punctuation">}</span>\n\n\t<span class="token keyword">private</span> ProcessWrapper <span class="token function">transformProcess</span><span class="token punctuation">(</span>PSI6000DataType doc<span class="token punctuation">)</span> <span class="token punctuation">{</span>\n\t\tProcessWrapper wrapper <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ProcessWrapper</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tWeldLog wl <span class="token operator">=</span> doc<span class="token punctuation">.</span><span class="token function">getMessage</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getWeldLog</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tOffsetDateTime odt <span class="token operator">=</span> OffsetDateTime<span class="token punctuation">.</span><span class="token function">of</span><span class="token punctuation">(</span>wl<span class="token punctuation">.</span><span class="token function">getDateTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> ZoneOffset<span class="token punctuation">.</span>UTC<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token comment">// device</span>\n\t\tDevice device <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Device</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tdevice<span class="token punctuation">.</span><span class="token function">setDeviceID</span><span class="token punctuation">(</span>doc<span class="token punctuation">.</span><span class="token function">getMessage</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getWeldLog</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTimerName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">setSpotName</span><span class="token punctuation">(</span>device<span class="token punctuation">,</span> wl<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\twrapper<span class="token punctuation">.</span><span class="token function">setDevice</span><span class="token punctuation">(</span>device<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token comment">// part</span>\n\t\tString partId <span class="token operator">=</span> wl<span class="token punctuation">.</span><span class="token function">getPartIdentString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token keyword">if</span> <span class="token punctuation">(</span>partId <span class="token operator">!=</span> null <span class="token operator">&amp;&amp;</span> partId<span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>\n\t\t\torg<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>Part part <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>Part</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t\tpart<span class="token punctuation">.</span><span class="token function">setPartID</span><span class="token punctuation">(</span>partId<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t\twrapper<span class="token punctuation">.</span><span class="token function">setPart</span><span class="token punctuation">(</span>part<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token punctuation">}</span>\n\n\t\t<span class="token comment">// process</span>\n\t\tProcess process <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Process</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tprocess<span class="token punctuation">.</span><span class="token function">setTimestamp</span><span class="token punctuation">(</span>odt<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tprocess<span class="token punctuation">.</span><span class="token function">setExternalProcessId</span><span class="token punctuation">(</span>String<span class="token punctuation">.</span><span class="token function">valueOf</span><span class="token punctuation">(</span>wl<span class="token punctuation">.</span><span class="token function">getProtRecordID</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\twrapper<span class="token punctuation">.</span><span class="token function">setProcess</span><span class="token punctuation">(</span>process<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token comment">// measurements</span>\n\t\tList<span class="token operator">&lt;</span>org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>Measurements<span class="token operator">></span> measurements <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">LinkedList</span><span class="token operator">&lt;</span>org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>Measurements<span class="token operator">></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\torg<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>Measurements measurement <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>Measurements</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t\n\t\tmeasurement<span class="token punctuation">.</span><span class="token function">setTimestamp</span><span class="token punctuation">(</span>odt<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token comment">//values</span>\n\t\torg<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>SeriesMap seriesMap <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>process<span class="token punctuation">.</span>SeriesMap</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tseriesMap<span class="token punctuation">.</span><span class="token function">setSeriesValue</span><span class="token punctuation">(</span><span class="token string">"curentCurve"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getCurrentCurve</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tseriesMap<span class="token punctuation">.</span><span class="token function">setSeriesValue</span><span class="token punctuation">(</span><span class="token string">"voltageCurve"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getVoltageCurve</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tseriesMap<span class="token punctuation">.</span><span class="token function">setSeriesValue</span><span class="token punctuation">(</span><span class="token string">"forceCurve"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getForceCurve</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t\n\t\tmeasurement<span class="token punctuation">.</span><span class="token function">setSeriesMap</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tmeasurements<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span>measurement<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\twrapper<span class="token punctuation">.</span><span class="token function">setMeasurements</span><span class="token punctuation">(</span>measurements<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t\n\t\t<span class="token keyword">return</span> wrapper<span class="token punctuation">;</span>\n\t<span class="token punctuation">}</span>\n\n\t<span class="token keyword">private</span> MeasurementsWrapper <span class="token function">transformMeasurement</span><span class="token punctuation">(</span>PSI6000DataType doc<span class="token punctuation">)</span> <span class="token punctuation">{</span>\n\t\tMeasurementsWrapper wrapper <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">MeasurementsWrapper</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tWeldLog wl <span class="token operator">=</span> doc<span class="token punctuation">.</span><span class="token function">getMessage</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getWeldLog</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token comment">// device</span>\n\t\tDevice device <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Device</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tdevice<span class="token punctuation">.</span><span class="token function">setDeviceID</span><span class="token punctuation">(</span>doc<span class="token punctuation">.</span><span class="token function">getMessage</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getWeldLog</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTimerName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">setSpotName</span><span class="token punctuation">(</span>device<span class="token punctuation">,</span> wl<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\twrapper<span class="token punctuation">.</span><span class="token function">setDevice</span><span class="token punctuation">(</span>device<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token comment">// part</span>\n\t\tString partId <span class="token operator">=</span> wl<span class="token punctuation">.</span><span class="token function">getPartIdentString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token keyword">if</span> <span class="token punctuation">(</span>partId <span class="token operator">!=</span> null <span class="token operator">&amp;&amp;</span> partId<span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>\n\t\t\torg<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>Part part <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>Part</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t\tpart<span class="token punctuation">.</span><span class="token function">setPartID</span><span class="token punctuation">(</span>partId<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t\twrapper<span class="token punctuation">.</span><span class="token function">setPart</span><span class="token punctuation">(</span>part<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token punctuation">}</span>\n\n\t\t<span class="token comment">// measurements</span>\n\t\tList<span class="token operator">&lt;</span>org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>Measurements<span class="token operator">></span> measurements <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">LinkedList</span><span class="token operator">&lt;</span>org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>Measurements<span class="token operator">></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\torg<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>Measurements measurement <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>Measurements</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\tmeasurement<span class="token punctuation">.</span><span class="token function">setTimestamp</span><span class="token punctuation">(</span>OffsetDateTime<span class="token punctuation">.</span><span class="token function">of</span><span class="token punctuation">(</span>wl<span class="token punctuation">.</span><span class="token function">getDateTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> ZoneOffset<span class="token punctuation">.</span>UTC<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token comment">// values</span>\n\t\torg<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>SeriesMap seriesMap <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">org<span class="token punctuation">.</span>eclipse<span class="token punctuation">.</span>iot<span class="token punctuation">.</span>unide<span class="token punctuation">.</span>ppmp<span class="token punctuation">.</span>measurements<span class="token punctuation">.</span>SeriesMap</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tseriesMap<span class="token punctuation">.</span><span class="token function">setSeriesValue</span><span class="token punctuation">(</span><span class="token string">"$_time"</span><span class="token punctuation">,</span> Arrays<span class="token punctuation">.</span><span class="token function">asList</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"wear"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWear</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"wearPerCent"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWearPerCent</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"monitorState"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getMonitorState</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regulationState"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegulationState</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"measureState"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getMeasureState</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"powerState"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getPowerState</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sequenceState"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSequenceState</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sequenceStateAdd"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSequenceStateAdd</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sequenceRepeat"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSequenceRepeat</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"monitorMode"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getMonitorMode</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"iDemandStd"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getIDemandStd</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"ilsts"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getIlsts</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regulationStd"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegulationStd</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"iDemand1"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getIDemand1</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"iActual1"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getIActual1</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regulation1"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegulation1</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"iDemand2"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getIDemand2</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"iActual2"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getIActual2</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regulation2"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegulation2</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"iDemand3"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getIDemand3</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"iActual3"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getIActual3</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regulation3"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegulation3</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"phaStd"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getPhaStd</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"pha1"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getPha1</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"pha2"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getPha2</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"pha3"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getPha3</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"t_iDemandStd"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getIDemandStd</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"tActualStd"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getTActualStd</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token comment">// addMeasurementPoint(seriesMap, "partIdentString",</span>\n\t\t<span class="token comment">// wl.getPartIdentString());</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"tipDressCounter"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getTipDressCounter</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"electrodeNo"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getElectrodeNo</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgForceSetPoint"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgForceSetPoint</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgSheetThicknessSetPoint"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgSheetThicknessSetPoint</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgSagGpSetPoint"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgSagGpSetPoint</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgSpotWithSg"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgSpotWithSg</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgMotorCurrent"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgMotorCurrent</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgMotorTemp"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgMotorTemp</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgForce"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgForce</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgSheetThickness"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgSheetThickness</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgSagGp"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgSagGp</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sgSagGc"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgSagGc</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regUsrUspJunction"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegUsrUspJunction</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regUsrUspMax"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegUsrUspMax</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regSpotDiaActual"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegSpotDiaActual</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regSpotDiaMinDemand"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegSpotDiaMinDemand</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regSplashTime"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegSplashTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"nuggetDiameter"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getNuggetDiameter</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"usp"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUsp</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"normingTime"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getNormingTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"regulationStartTime"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getRegulationStartTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"returnToConstantCurrent"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getReturnToConstantCurrent</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"declineUsp"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getDeclineUsp</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"offsetUsp"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getOffsetUsp</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"currentFactor"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getCurrentFactor</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"triggerTime"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getTriggerTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"xqrMeasuringActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getXqrMeasuringActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"xqrRegulationActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getXqrRegulationActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"xqrMonitoringActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getXqrMonitoringActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"xqrWeldTimeProlongationActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getXqrWeldTimeProlongationActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"voltageActualValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getVoltageActualValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"voltageRefValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getVoltageRefValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"currentActualValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getCurrentActualValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"currentReferenceValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getCurrentReferenceValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldTimeActualValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldTimeActualValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldTimeRefValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldTimeRefValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"energyActualValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getEnergyActualValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"energyRefValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getEnergyRefValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"powerActualValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getPowerActualValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"powerRefValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getPowerRefValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"resistanceActualValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getResistanceActualValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"resistanceRefValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getResistanceRefValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"pulseWidthActualValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getPulseWidthActualValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"pulseWidthRefValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getPulseWidthRefValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"stabilisationFactorActValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getStabilisationFactorActValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"stabilisationFactorRefValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getStabilisationFactorRefValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"thresholdStabilisationFactor"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getThresholdStabilisationFactor</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"wldEffectStabilisationFactor"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWldEffectStabilisationFactor</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uipActualValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUipActualValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uipRefValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUipRefValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirExpulsionTime"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirExpulsionTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirMeasuringActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirMeasuringActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirRegulationActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirRegulationActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirMonitoringActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirMonitoringActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirWeldTimeProlongationActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirWeldTimeProlongationActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirQStoppRefCntValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirQStoppRefCntValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirQStoppActCntValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirQStoppActCntValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirUipUpperTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirUipUpperTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirUipLowerTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirUipLowerTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirUipCondTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirUipCondTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirPsfLowerTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirPsfLowerTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uirPsfCondTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUirPsfCondTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_1"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP161</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_2"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP162</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_3"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP163</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_4"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP164</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_5"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP165</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP32_6"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP326</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_7"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP167</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_8"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP168</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_9"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP169</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_10"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP1610</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_11"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP1611</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP32_12"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP3212</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_13"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP1613</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_14"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP1614</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_15"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP1615</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_16"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP1616</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP16_17"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP1617</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"weldSpotCustDataP32_18"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getWeldSpotCustDataP3218</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"uipMonCondUpperTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getUipMonCondUpperTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"fqfActualValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getFqfActualValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"fqfRefValue"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getFqfRefValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"fqfMonUpperTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getFqfMonUpperTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"fqfMonLowerTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getFqfMonLowerTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"fqfMonCondUpperTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getFqfMonCondUpperTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"fqfMonCondLowerTol"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getFqfMonCondLowerTol</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"fqfMeasuringActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getFqfMeasuringActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"xqrModeOff"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getXqrModeOff</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"reweldActive"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getReweldActive</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token comment">// addMeasurementPoint(seriesMap, "weldspotRefIdent",</span>\n\t\t<span class="token comment">// wl.getWeldspotRefIdent());</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sg_Torque_Gp"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgTorqueGp</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sg_Force_Corr"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgForceCorr</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sg_Weldspot_Geo_Wear"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgWeldspotGeoWear</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sg_Wear_Length"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgWearLength</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token function">addMeasurementPoint</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">,</span> <span class="token string">"sg_Beam_UpArching"</span><span class="token punctuation">,</span> wl<span class="token punctuation">.</span><span class="token function">getSgBeamUpArching</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\tmeasurement<span class="token punctuation">.</span><span class="token function">setSeriesMap</span><span class="token punctuation">(</span>seriesMap<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\tmeasurements<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span>measurement<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\twrapper<span class="token punctuation">.</span><span class="token function">setMeasurements</span><span class="token punctuation">(</span>measurements<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token keyword">return</span> wrapper<span class="token punctuation">;</span>\n\t<span class="token punctuation">}</span>\n<span class="token punctuation">}</span>\n</code></pre>\n<h1>Summary</h1>\n<p>It takes a while to understand the involved software components. Yet, once the set up is running, it gets much easier to adapt it to another Use Case. And another. The pattern of wiring protocols and transforming the payload is very similar. The involved frameworks are powerful enough to support many Use Cases. This article is supposed to show that there are simple possibilities to transform transport protocols and payloads, so that you can focus on addressing functional challenges.</p>\n',url:"/blog/2018/2/11/Transform-PPMP-with-camel",title:"Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel",date:new Date(15183072e5),tags:["use cases"],prev:{url:"/blog/2018/1/26/New-website",title:"Updated Website"},next:{url:"/blog/2018/2/13/grinding-machine-scenario",title:"Use Cases: Unide and the Eclipse Testbed"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/2918aa6661dd624eef70.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2018/2/11/index.html b/blog/2018/2/11/index.html
index 7fa4bd4..3e60bda 100644
--- a/blog/2018/2/11/index.html
+++ b/blog/2018/2/11/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - March 11, 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - March 11, 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -17,21 +17,21 @@
     </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="blog column is-8"><h1 class="title is-3">
     March 11, 2018
   </h1> <ul><li><h2 class="title is-4"><a href="/unide/blog/2018/2/11/Transform-PPMP-with-camel">
-          PPMP Use Cases: Simple Transformation with Apache Camel
+          Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2018/2/11/Transform-PPMP-with-camel"><i class="fa fa-calendar"></i>  
           11
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/2/11/Transform-PPMP-with-camel",title:"PPMP Use Cases: Simple Transformation with Apache Camel",date:new Date(15183072e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/2/11/Transform-PPMP-with-camel",title:"Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel",date:new Date(15183072e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2018/2/13/grinding-machine-scenario/index.html b/blog/2018/2/13/grinding-machine-scenario/index.html
index cb1c240..71b7596 100644
--- a/blog/2018/2/13/grinding-machine-scenario/index.html
+++ b/blog/2018/2/13/grinding-machine-scenario/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
+    <title data-n-head="true">Eclipse unide - Use Cases: Unide and the Eclipse Testbed</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -15,13 +15,13 @@
     </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">
-    PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+    Use Cases: Unide and the Eclipse Testbed
   </h1> <h2 class="subtitle is-6"><i class="fa fa-calendar"></i>  
     02/13/18
   </h2> <div class="content"><div><h2>Abstract</h2>
 <p>In this blog post we present a real world condition monitoring scenario used in<br>
 the <a href="https://iot.eclipse.org/testbeds/production-performance-management/#">Eclipse Production Performance Management Testbed</a>, where Unide and<br>
-PPMP plays a crucial role. Moreover, we also provide a code repository and<br>
+the Production Performance Management Protocol plays a crucial role. Moreover, we also provide a code repository and<br>
 instructions so that you can recreate the scenario in your own computer and<br>
 learn about its components and the communication with each other.</p>
 <h2>Introduction</h2>
@@ -36,7 +36,7 @@
 <li>
 <p>The device, i.e. the grinding machine, has been retrofitted with an<br>
 acceleration sensor attached to one of its critical components. The data<br>
-provided by this sensor is routed to the gateway in the form of a <a href="https://www.eclipse.org/unide/specification/measurement-message#messageDetail">PPMP<br>
+provided by this sensor is routed to the gateway in the form of a <a href="https://www.eclipse.org/unide/specification/measurement-message#messageDetail">Production Performance Management Protocol<br>
 Measurement Message</a>.</p>
 </li>
 <li>
@@ -44,7 +44,7 @@
 statistical characteristics and and applies some machine learning techniques<br>
 to them in order to evaluate the condition of the grinding machine. Then both<br>
 the statistical values and the condition are routed to the backend, again in<br>
-the form of a PPMP Measurement Message.</p>
+the form of a Production Performance Management Protocol Measurement Message.</p>
 </li>
 <li>
 <p>The backend, usually in the cloud, is any component that "speaks PPMP" and<br>
@@ -54,7 +54,7 @@
 representation or display of the data (e.g. dashboards), or workflows<br>
 management (e.g. the grinding machine is in bad condition and an inspection<br>
 must be carried out).</p>
-<p>The backend can be swapped effortless with any entity adhering to PPMP standard.<br>
+<p>The backend can be swapped effortless with any entity adhering to the Production Performance Management Protocol standard.<br>
 In the Eclipse PPM Testbed at least two different backends have been used:</p>
 <ul>
 <li>One directly based on <a href="https://github.com/eclipse/unide">Unide</a></li>
@@ -91,7 +91,7 @@
 </code></pre>
 <p>Run <code>unide-grinding-machine -h</code> to get familiar with the CLI. With this<br>
 executable we can generate some machine grinding data, and (for the moment)<br>
-print messages to the console. To do so, run <code>unide-grinding-machine send random</code> and you should get a large message on the console. This is the PPMP<br>
+print messages to the console. To do so, run <code>unide-grinding-machine send random</code> and you should get a large message on the console. This is the Production Performance Management Protocol<br>
 message ought to be sent to the gateway.</p>
 <p>We don't have a gateway so far, but don't worry, we will get to that in a<br>
 minute. Don't close this console!</p>
@@ -113,7 +113,7 @@
 <pre class="language-bash"><code class="language-bash">$ unide-grinding-machine send random --endpoint<span class="token operator">=</span>http://127.0.0.1:5000
 </code></pre>
 <p>If you take peek at the gateway output, you should see new information printed<br>
-out, which is a PPMP message containing the result of the classification<br>
+out, which is a Production Performance Management Protocol message containing the result of the classification<br>
 algorithms applied to the device data we just sent to it.</p>
 <p>We are getting somewhere! But still, it is not extremely useful to print some<br>
 characters into a console, is it?</p>
@@ -142,18 +142,18 @@
 maintenance events, device master data and the Activity Stream, a place where<br>
 different parties can exchange information related to the grinding machine:</p>
 <p><img src="/unide/images/blog/grinding-machine-ce4iot-dashboard.png" alt="CONTACT Elements for IoT Dashboard"></p>
-</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2018/2/11/Transform-PPMP-with-camel" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>PPMP Use Cases: Simple Transformation with Apache Camel</span></a></div> <div class="column"><a href="/unide/blog/2018/3/26/Release-0.2.0" class="button is-fullwidth"><span>Unide 0.2.0 released</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">
+</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2018/2/11/Transform-PPMP-with-camel" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel</span></a></div> <div class="column"><a href="/unide/blog/2018/3/26/Release-0.2.0" class="button is-fullwidth"><span>Unide 0.2.0 released</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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario" class="nuxt-link-exact-active nuxt-link-active">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -196,6 +196,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"grinding-machine-scenario",content:'<h2>Abstract</h2>\n<p>In this blog post we present a real world condition monitoring scenario used in<br>\nthe <a href="https://iot.eclipse.org/testbeds/production-performance-management/#">Eclipse Production Performance Management Testbed</a>, where Unide and<br>\nPPMP plays a crucial role. Moreover, we also provide a code repository and<br>\ninstructions so that you can recreate the scenario in your own computer and<br>\nlearn about its components and the communication with each other.</p>\n<h2>Introduction</h2>\n<p>In the context of the <a href="https://iot.eclipse.org/testbeds/production-performance-management/#">Eclipse Production Performance Management Testbed</a>, a<br>\nreal world condition monitoring scenario has been recreated, in which a<br>\ngrinding machine is being continuously monitored allowing to have real time<br>\nhealth checks and prevent unexpected failures.</p>\n<p>This scenario consists of the following building blocks: device, gateway,<br>\nbackend. The communication between them happens seamlessly thanks to the<br>\nProduction Performance management Protocol (PPMP).</p>\n<ul>\n<li>\n<p>The device, i.e. the grinding machine, has been retrofitted with an<br>\nacceleration sensor attached to one of its critical components. The data<br>\nprovided by this sensor is routed to the gateway in the form of a <a href="https://www.eclipse.org/unide/specification/measurement-message#messageDetail">PPMP<br>\nMeasurement Message</a>.</p>\n</li>\n<li>\n<p>The gateway receives the raw acceleration measurements, calculates some<br>\nstatistical characteristics and and applies some machine learning techniques<br>\nto them in order to evaluate the condition of the grinding machine. Then both<br>\nthe statistical values and the condition are routed to the backend, again in<br>\nthe form of a PPMP Measurement Message.</p>\n</li>\n<li>\n<p>The backend, usually in the cloud, is any component that &quot;speaks PPMP&quot; and<br>\nperforms meaningful operations on the incoming messages. Most frequently it<br>\nis responsible for storing the arriving data and making it available to apps<br>\nthat want to consume it. Common responsibilities of these apps are the<br>\nrepresentation or display of the data (e.g. dashboards), or workflows<br>\nmanagement (e.g. the grinding machine is in bad condition and an inspection<br>\nmust be carried out).</p>\n<p>The backend can be swapped effortless with any entity adhering to PPMP standard.<br>\nIn the Eclipse PPM Testbed at least two different backends have been used:</p>\n<ul>\n<li>One directly based on <a href="https://github.com/eclipse/unide">Unide</a></li>\n<li>One based on <a href="https://www.contact-software.com/en/products/elements-for-iot/">CONTACT Elements for IoT</a>.</li>\n</ul>\n</li>\n</ul>\n<h2>Hands-on demonstration</h2>\n<p>In order to make this scenario more hands-on and interesting, within the<br>\n<a href="https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement">Production Performance Management Testbed repository</a> project in Github, we<br>\nhave set up a <a href="https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement/tree/master/grinding-machine">subproject for the grinding machine scenario</a>. There you can<br>\nfind a thorough description and code to simulate the device and the gateway,<br>\nand route messages to a given backend. The only requirements are git and conda<br>\n(the easiest way to get conda is to <a href="https://conda.io/miniconda.html">install miniconda</a>).</p>\n<p>So, let\'s get started! First of all, open your terminal and clone the<br>\nrepository:</p>\n<pre class="language-bash"><code class="language-bash">$ <span class="token function">git</span> clone https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement eclipse-testbed-ppm\n$ <span class="token function">cd</span> eclipse-testbed-ppm/grinding-machine\n</code></pre>\n<p>Then move to the grinding machine subproject directory:</p>\n<pre class="language-bash"><code class="language-bash">$ <span class="token function">cd</span> eclipse-testbed-ppm/grinding-machine\n</code></pre>\n<p>In that folder you will see two subfolders. The first one<br>\n<code>unide-grinding-machine</code> contains a Python program that simulates grinding<br>\nmachine and the second one <code>unide-grinding-machine-gateway</code> simulates the<br>\ngateway.</p>\n<h3>Grinding Machine simulator</h3>\n<p>Let\'s start with the first component. First <code>cd</code> to <code>unide-grinding-machine</code><br>\nand then create the conda environment:</p>\n<pre class="language-bash"><code class="language-bash">$ conda <span class="token function">env</span> create --prefix<span class="token operator">=</span>env\n</code></pre>\n<p>And then in order to use this environment, we need to activate it.</p>\n<pre class="language-bash"><code class="language-bash">$ <span class="token function">source</span> activate <span class="token function">env</span>    <span class="token comment"># or in windows: activate env </span>\n</code></pre>\n<p>Run <code>unide-grinding-machine -h</code> to get familiar with the CLI. With this<br>\nexecutable we can generate some machine grinding data, and (for the moment)<br>\nprint messages to the console. To do so, run <code>unide-grinding-machine send random</code> and you should get a large message on the console. This is the PPMP<br>\nmessage ought to be sent to the gateway.</p>\n<p>We don\'t have a gateway so far, but don\'t worry, we will get to that in a<br>\nminute. Don\'t close this console!</p>\n<h3>Gateway simulator</h3>\n<p>Open a new console, and similarly to the previous point, first <code>cd</code> to<br>\n<code>unide-grinding-machine-gateway</code>, create the environment (<code>conda env create --prefix=env</code>) and activate it (<code>source activate env</code>).</p>\n<p>The run the command <code>unide-grinding-machine-gateway -h</code> to test that everything<br>\nis in place. You should get the CLI documentation.</p>\n<p>Now, let\'s fire up the gateway by calling <code>unide-grinding-machine-gateway start_server</code>, and a message like this should show up:</p>\n<pre class="language-bash"><code class="language-bash">Running <span class="token operator">&lt;</span>unide_grinding_machine_gateway.server.App object at 0x<span class="token punctuation">..</span><span class="token punctuation">..</span>.<span class="token operator">></span>\nListening on http://127.0.0.1:5000\nPress Ctrl-C to stop<span class="token punctuation">..</span>.\n</code></pre>\n<p>We are getting closer. Leave the gateway running.</p>\n<h3>Communication Device-Gateway</h3>\n<p>Let\'s go back to the previous console where we had the <code>unide-grinding-machine</code><br>\nenvironment and  call again the <code>unide-grinding-machine</code> program, but this time<br>\npassing the as an argument where the gateway is listening to messages.</p>\n<pre class="language-bash"><code class="language-bash">$ unide-grinding-machine send random --endpoint<span class="token operator">=</span>http://127.0.0.1:5000\n</code></pre>\n<p>If you take peek at the gateway output, you should see new information printed<br>\nout, which is a PPMP message containing the result of the classification<br>\nalgorithms applied to the device data we just sent to it.</p>\n<p>We are getting somewhere! But still, it is not extremely useful to print some<br>\ncharacters into a console, is it?</p>\n<h3>Communication Device-Gateway-Backend</h3>\n<p>There is only a small but relevant point missing: the routing from the gateway<br>\nto the backend. We need a backend and the Unide project provides a service that<br>\ncan be used as a playground for these purposes. So let\'s restart the gateway,<br>\nthis time passing the Unide endpoint:</p>\n<pre class="language-bash"><code class="language-bash">$ unide-grinding-machine-gateway start_server --endpoint<span class="token operator">=</span>https://unide.eclipse.org/rest/v2\n</code></pre>\n<p>Now we can use the <code>unide-grinding-machine</code> to send raw data to the gateway<br>\nwhich in turn sends its results to the backend.  In order to be able to<br>\nidentify this data later, we are going to define a proper device ID (argument<br>\n<code>--device-id</code>), and also tell it to send data once each 10 seconds (argument<br>\n<code>--period</code>):</p>\n<pre class="language-bash"><code class="language-bash">$ unide-grinding-machine send random --endpoint<span class="token operator">=</span>http://127.0.0.1:5000 --device-id<span class="token operator">=</span>IoT-000028--3 --period<span class="token operator">=</span>10\n</code></pre>\n<p>Once started, a continuous flow of data is pumped through each component until<br>\nit reaches the backend, allowing us to use the applications that consume this<br>\ndata. For instance, the basic backend provided by Unide offers a <a href="https://grafana.com/">Grafana</a> based<br>\ndashboard that offers live monitoring of the statistical values calculated in the<br>\ngateway:</p>\n<p><img src="/unide/images/blog/grinding-machine-grafana-dashboard.png" alt="Grafana based dashboard monitoring grinding machine"></p>\n<p>If instead of that we use the the <a href="https://www.contact-software.com/en/products/elements-for-iot/">CONTACT Elements for IoT</a> based backend,<br>\nwe can see a different and richer dashboard: charts, 3D models, list of<br>\nmaintenance events, device master data and the Activity Stream, a place where<br>\ndifferent parties can exchange information related to the grinding machine:</p>\n<p><img src="/unide/images/blog/grinding-machine-ce4iot-dashboard.png" alt="CONTACT Elements for IoT Dashboard"></p>\n',url:"/blog/2018/2/13/grinding-machine-scenario",title:"PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed",date:new Date(151848e7),tags:["use cases"],prev:{url:"/blog/2018/2/11/Transform-PPMP-with-camel",title:"PPMP Use Cases: Simple Transformation with Apache Camel"},next:{url:"/blog/2018/3/26/Release-0.2.0",title:"Unide 0.2.0 released"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/c3e469380ccd51a92bb6.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"grinding-machine-scenario",content:'<h2>Abstract</h2>\n<p>In this blog post we present a real world condition monitoring scenario used in<br>\nthe <a href="https://iot.eclipse.org/testbeds/production-performance-management/#">Eclipse Production Performance Management Testbed</a>, where Unide and<br>\nthe Production Performance Management Protocol plays a crucial role. Moreover, we also provide a code repository and<br>\ninstructions so that you can recreate the scenario in your own computer and<br>\nlearn about its components and the communication with each other.</p>\n<h2>Introduction</h2>\n<p>In the context of the <a href="https://iot.eclipse.org/testbeds/production-performance-management/#">Eclipse Production Performance Management Testbed</a>, a<br>\nreal world condition monitoring scenario has been recreated, in which a<br>\ngrinding machine is being continuously monitored allowing to have real time<br>\nhealth checks and prevent unexpected failures.</p>\n<p>This scenario consists of the following building blocks: device, gateway,<br>\nbackend. The communication between them happens seamlessly thanks to the<br>\nProduction Performance management Protocol (PPMP).</p>\n<ul>\n<li>\n<p>The device, i.e. the grinding machine, has been retrofitted with an<br>\nacceleration sensor attached to one of its critical components. The data<br>\nprovided by this sensor is routed to the gateway in the form of a <a href="https://www.eclipse.org/unide/specification/measurement-message#messageDetail">Production Performance Management Protocol<br>\nMeasurement Message</a>.</p>\n</li>\n<li>\n<p>The gateway receives the raw acceleration measurements, calculates some<br>\nstatistical characteristics and and applies some machine learning techniques<br>\nto them in order to evaluate the condition of the grinding machine. Then both<br>\nthe statistical values and the condition are routed to the backend, again in<br>\nthe form of a Production Performance Management Protocol Measurement Message.</p>\n</li>\n<li>\n<p>The backend, usually in the cloud, is any component that &quot;speaks PPMP&quot; and<br>\nperforms meaningful operations on the incoming messages. Most frequently it<br>\nis responsible for storing the arriving data and making it available to apps<br>\nthat want to consume it. Common responsibilities of these apps are the<br>\nrepresentation or display of the data (e.g. dashboards), or workflows<br>\nmanagement (e.g. the grinding machine is in bad condition and an inspection<br>\nmust be carried out).</p>\n<p>The backend can be swapped effortless with any entity adhering to the Production Performance Management Protocol standard.<br>\nIn the Eclipse PPM Testbed at least two different backends have been used:</p>\n<ul>\n<li>One directly based on <a href="https://github.com/eclipse/unide">Unide</a></li>\n<li>One based on <a href="https://www.contact-software.com/en/products/elements-for-iot/">CONTACT Elements for IoT</a>.</li>\n</ul>\n</li>\n</ul>\n<h2>Hands-on demonstration</h2>\n<p>In order to make this scenario more hands-on and interesting, within the<br>\n<a href="https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement">Production Performance Management Testbed repository</a> project in Github, we<br>\nhave set up a <a href="https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement/tree/master/grinding-machine">subproject for the grinding machine scenario</a>. There you can<br>\nfind a thorough description and code to simulate the device and the gateway,<br>\nand route messages to a given backend. The only requirements are git and conda<br>\n(the easiest way to get conda is to <a href="https://conda.io/miniconda.html">install miniconda</a>).</p>\n<p>So, let\'s get started! First of all, open your terminal and clone the<br>\nrepository:</p>\n<pre class="language-bash"><code class="language-bash">$ <span class="token function">git</span> clone https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement eclipse-testbed-ppm\n$ <span class="token function">cd</span> eclipse-testbed-ppm/grinding-machine\n</code></pre>\n<p>Then move to the grinding machine subproject directory:</p>\n<pre class="language-bash"><code class="language-bash">$ <span class="token function">cd</span> eclipse-testbed-ppm/grinding-machine\n</code></pre>\n<p>In that folder you will see two subfolders. The first one<br>\n<code>unide-grinding-machine</code> contains a Python program that simulates grinding<br>\nmachine and the second one <code>unide-grinding-machine-gateway</code> simulates the<br>\ngateway.</p>\n<h3>Grinding Machine simulator</h3>\n<p>Let\'s start with the first component. First <code>cd</code> to <code>unide-grinding-machine</code><br>\nand then create the conda environment:</p>\n<pre class="language-bash"><code class="language-bash">$ conda <span class="token function">env</span> create --prefix<span class="token operator">=</span>env\n</code></pre>\n<p>And then in order to use this environment, we need to activate it.</p>\n<pre class="language-bash"><code class="language-bash">$ <span class="token function">source</span> activate <span class="token function">env</span>    <span class="token comment"># or in windows: activate env </span>\n</code></pre>\n<p>Run <code>unide-grinding-machine -h</code> to get familiar with the CLI. With this<br>\nexecutable we can generate some machine grinding data, and (for the moment)<br>\nprint messages to the console. To do so, run <code>unide-grinding-machine send random</code> and you should get a large message on the console. This is the Production Performance Management Protocol<br>\nmessage ought to be sent to the gateway.</p>\n<p>We don\'t have a gateway so far, but don\'t worry, we will get to that in a<br>\nminute. Don\'t close this console!</p>\n<h3>Gateway simulator</h3>\n<p>Open a new console, and similarly to the previous point, first <code>cd</code> to<br>\n<code>unide-grinding-machine-gateway</code>, create the environment (<code>conda env create --prefix=env</code>) and activate it (<code>source activate env</code>).</p>\n<p>The run the command <code>unide-grinding-machine-gateway -h</code> to test that everything<br>\nis in place. You should get the CLI documentation.</p>\n<p>Now, let\'s fire up the gateway by calling <code>unide-grinding-machine-gateway start_server</code>, and a message like this should show up:</p>\n<pre class="language-bash"><code class="language-bash">Running <span class="token operator">&lt;</span>unide_grinding_machine_gateway.server.App object at 0x<span class="token punctuation">..</span><span class="token punctuation">..</span>.<span class="token operator">></span>\nListening on http://127.0.0.1:5000\nPress Ctrl-C to stop<span class="token punctuation">..</span>.\n</code></pre>\n<p>We are getting closer. Leave the gateway running.</p>\n<h3>Communication Device-Gateway</h3>\n<p>Let\'s go back to the previous console where we had the <code>unide-grinding-machine</code><br>\nenvironment and  call again the <code>unide-grinding-machine</code> program, but this time<br>\npassing the as an argument where the gateway is listening to messages.</p>\n<pre class="language-bash"><code class="language-bash">$ unide-grinding-machine send random --endpoint<span class="token operator">=</span>http://127.0.0.1:5000\n</code></pre>\n<p>If you take peek at the gateway output, you should see new information printed<br>\nout, which is a Production Performance Management Protocol message containing the result of the classification<br>\nalgorithms applied to the device data we just sent to it.</p>\n<p>We are getting somewhere! But still, it is not extremely useful to print some<br>\ncharacters into a console, is it?</p>\n<h3>Communication Device-Gateway-Backend</h3>\n<p>There is only a small but relevant point missing: the routing from the gateway<br>\nto the backend. We need a backend and the Unide project provides a service that<br>\ncan be used as a playground for these purposes. So let\'s restart the gateway,<br>\nthis time passing the Unide endpoint:</p>\n<pre class="language-bash"><code class="language-bash">$ unide-grinding-machine-gateway start_server --endpoint<span class="token operator">=</span>https://unide.eclipse.org/rest/v2\n</code></pre>\n<p>Now we can use the <code>unide-grinding-machine</code> to send raw data to the gateway<br>\nwhich in turn sends its results to the backend.  In order to be able to<br>\nidentify this data later, we are going to define a proper device ID (argument<br>\n<code>--device-id</code>), and also tell it to send data once each 10 seconds (argument<br>\n<code>--period</code>):</p>\n<pre class="language-bash"><code class="language-bash">$ unide-grinding-machine send random --endpoint<span class="token operator">=</span>http://127.0.0.1:5000 --device-id<span class="token operator">=</span>IoT-000028--3 --period<span class="token operator">=</span>10\n</code></pre>\n<p>Once started, a continuous flow of data is pumped through each component until<br>\nit reaches the backend, allowing us to use the applications that consume this<br>\ndata. For instance, the basic backend provided by Unide offers a <a href="https://grafana.com/">Grafana</a> based<br>\ndashboard that offers live monitoring of the statistical values calculated in the<br>\ngateway:</p>\n<p><img src="/unide/images/blog/grinding-machine-grafana-dashboard.png" alt="Grafana based dashboard monitoring grinding machine"></p>\n<p>If instead of that we use the the <a href="https://www.contact-software.com/en/products/elements-for-iot/">CONTACT Elements for IoT</a> based backend,<br>\nwe can see a different and richer dashboard: charts, 3D models, list of<br>\nmaintenance events, device master data and the Activity Stream, a place where<br>\ndifferent parties can exchange information related to the grinding machine:</p>\n<p><img src="/unide/images/blog/grinding-machine-ce4iot-dashboard.png" alt="CONTACT Elements for IoT Dashboard"></p>\n',url:"/blog/2018/2/13/grinding-machine-scenario",title:"Use Cases: Unide and the Eclipse Testbed",date:new Date(151848e7),tags:["use cases"],prev:{url:"/blog/2018/2/11/Transform-PPMP-with-camel",title:"Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel"},next:{url:"/blog/2018/3/26/Release-0.2.0",title:"Unide 0.2.0 released"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/2918aa6661dd624eef70.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2018/2/13/index.html b/blog/2018/2/13/index.html
index fb12345..ec47197 100644
--- a/blog/2018/2/13/index.html
+++ b/blog/2018/2/13/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - March 13, 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - March 13, 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -17,21 +17,21 @@
     </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="blog column is-8"><h1 class="title is-3">
     March 13, 2018
   </h1> <ul><li><h2 class="title is-4"><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-          PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+          Use Cases: Unide and the Eclipse Testbed
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2018/2/13/grinding-machine-scenario"><i class="fa fa-calendar"></i>  
           13
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/2/13/grinding-machine-scenario",title:"PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed",date:new Date(151848e7)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/2/13/grinding-machine-scenario",title:"Use Cases: Unide and the Eclipse Testbed",date:new Date(151848e7)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2018/2/index.html b/blog/2018/2/index.html
index 12da432..7ad0de7 100644
--- a/blog/2018/2/index.html
+++ b/blog/2018/2/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - March 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - March 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -17,25 +17,25 @@
     </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="blog column is-8"><h1 class="title is-3">
     March 2018
   </h1> <ul><li><h2 class="title is-4"><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-          PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+          Use Cases: Unide and the Eclipse Testbed
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2018/2/13/grinding-machine-scenario"><i class="fa fa-calendar"></i>  
           13
         </a></h3></li><li><h2 class="title is-4"><a href="/unide/blog/2018/2/11/Transform-PPMP-with-camel">
-          PPMP Use Cases: Simple Transformation with Apache Camel
+          Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2018/2/11/Transform-PPMP-with-camel"><i class="fa fa-calendar"></i>  
           11
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -78,6 +78,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/2/13/grinding-machine-scenario",title:"PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed",date:new Date(151848e7)},{url:"/blog/2018/2/11/Transform-PPMP-with-camel",title:"PPMP Use Cases: Simple Transformation with Apache Camel",date:new Date(15183072e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/2/13/grinding-machine-scenario",title:"Use Cases: Unide and the Eclipse Testbed",date:new Date(151848e7)},{url:"/blog/2018/2/11/Transform-PPMP-with-camel",title:"Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel",date:new Date(15183072e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2018/3/26/Release-0.2.0/index.html b/blog/2018/3/26/Release-0.2.0/index.html
index aadfc31..8bddce5 100644
--- a/blog/2018/3/26/Release-0.2.0/index.html
+++ b/blog/2018/3/26/Release-0.2.0/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Unide 0.2.0 released</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
+    <title data-n-head="true">Eclipse unide - Unide 0.2.0 released</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -33,7 +33,7 @@
 <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>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, Production Performance Management Protocol 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>
@@ -65,7 +65,7 @@
   <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>
+<p>Start the Production Performance Management Protocol 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>
@@ -74,10 +74,10 @@
 <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="https://repo.eclipse.org/content/repositories/unide-releases/org/eclipse/iot/unide/ppmp/ppmp-schema/2.0.0/">Production Performance Management Protocol 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/">Production Performance Management Protocol 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">Production Performance Management Protocol 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/">Production Performance Management Protocol Server</a></li>
 <li><a href="http://download.eclipse.org/unide/binsa.crx">binsa client chrome app</a></li>
 </ul>
 <p>Source code:</p>
@@ -103,7 +103,7 @@
 <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>
+<h3>Production Performance Management Protocol JSON Schema files</h3>
 <ul>
 <li>Introduced separate bundle for schemas</li>
 <li>general fixes
@@ -140,7 +140,7 @@
 </ul>
 <h3>Website</h3>
 <ul>
-<li>Autogenerating PPMP specification from JSON schemas to avoid discrepancies</li>
+<li>Autogenerating Production Performance Management Protocol 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>
@@ -148,18 +148,18 @@
 <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">
+</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>Use Cases: Unide and the Eclipse Testbed</span></a></div> <div class="column"><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation" class="button is-fullwidth"><span>Use Cases: Template for 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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><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><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -202,6 +202,6 @@
         October 2016
       </a>
       (4)
-    </li></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>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:new Date(152206074e4),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,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/c3e469380ccd51a92bb6.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>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, Production Performance Management Protocol 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 Production Performance Management Protocol 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/">Production Performance Management Protocol 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/">Production Performance Management Protocol 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">Production Performance Management Protocol 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/">Production Performance Management Protocol 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>Production Performance Management Protocol 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 Production Performance Management Protocol 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:new Date(152206074e4),tags:["releases"],prev:{url:"/blog/2018/2/13/grinding-machine-scenario",title:"Use Cases: Unide and the Eclipse Testbed"},next:{url:"/blog/2018/9/4/Template-for-PPMP-transformation",title:"Use Cases: Template for transformation"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/2918aa6661dd624eef70.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2018/3/26/index.html b/blog/2018/3/26/index.html
index 5c2be90..2dfea2f 100644
--- a/blog/2018/3/26/index.html
+++ b/blog/2018/3/26/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - April 26, 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - April 26, 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -23,15 +23,15 @@
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/3/26/Release-0.2.0",title:"Unide 0.2.0 released",date:new Date(152206074e4)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/3/26/Release-0.2.0",title:"Unide 0.2.0 released",date:new Date(152206074e4)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2018/3/index.html b/blog/2018/3/index.html
index fbca0a3..ae66d1c 100644
--- a/blog/2018/3/index.html
+++ b/blog/2018/3/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - April 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - April 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -23,15 +23,15 @@
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/3/26/Release-0.2.0",title:"Unide 0.2.0 released",date:new Date(152206074e4)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/3/26/Release-0.2.0",title:"Unide 0.2.0 released",date:new Date(152206074e4)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2018/9/4/Template-for-PPMP-transformation/index.html b/blog/2018/9/4/Template-for-PPMP-transformation/index.html
index 6e47899..c397d6a 100644
--- a/blog/2018/9/4/Template-for-PPMP-transformation/index.html
+++ b/blog/2018/9/4/Template-for-PPMP-transformation/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - PPMP Use Cases: Template for PPMP transformation</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
+    <title data-n-head="true">Eclipse unide - Use Cases: Template for transformation</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -15,11 +15,11 @@
     </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">
-    PPMP Use Cases: Template for PPMP transformation
+    Use Cases: Template for transformation
   </h1> <h2 class="subtitle is-6"><i class="fa fa-calendar"></i>  
     09/04/18
   </h2> <div class="content"><div><h1>Quick start</h1>
-<p>In <a href="https://www.eclipse.org/unide/blog/2018/2/11/Transform-PPMP-with-camel/">a previous blog post</a>, I have already introduced Apache Camel as a tool to transform to PPMP. In this post, I want to dive a little deeper to get you started with your own transformation.<br>
+<p>In <a href="https://www.eclipse.org/unide/blog/2018/2/11/Transform-PPMP-with-camel/">a previous blog post</a>, I have already introduced Apache Camel as a tool to transform to the Production Performance Management Protocol. In this post, I want to dive a little deeper to get you started with your own transformation.<br>
 You can find corresponding source code with some transformation examples <a href="https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement/tree/master/camel-integrator">in the repository of the Eclipse PPM Testbed</a>. After download or checkout of the project, you can easily package everything necessary for an installation via <a href="https://maven.apache.org/">Apache Maven</a> and java 8+:</p>
 <pre class="language-bash"><code class="language-bash"><span class="token function">git</span> clone https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement.git
 <span class="token function">cd</span> eclipseiot-testbed-productionperformancemanagement
@@ -83,27 +83,27 @@
 		</figure>
 	</div>
 	<div class="card-content">
-		html logfile before transformation to PPMP
+		html logfile before transformation to the Production Performance Management Protocol
 	</div>
 </div>
 <ul>
 <li><code>application-context.xml</code><br>
-Main entry file to start camel routes. It contains a general PPMP validation REST endpoint that reuses the route from <code>ppmp-validate-context.xml</code></li>
+Main entry file to start camel routes. It contains a general Production Performance Management Protocol validation REST endpoint that reuses the route from <code>ppmp-validate-context.xml</code></li>
 <li><code>mqtt-context.xml</code><br>
 A simple example of converting transport protocol (mqtt to REST), without looking at the payload</li>
 <li><code>ppmp-splitAndRewrite-context.xml</code><br>
-Shows how to receive (PPMP-) payload via different REST paths (/rest or /ppm), and each forwarding to two seperate endpoints (/rest and /ppm)
+Shows how to receive (Production Performance Management Protocol-) payload via different REST paths (/rest or /ppm), and each forwarding to two seperate endpoints (/rest and /ppm)
 <ul>
 <li><code>ppmpRewrite.xml</code> and <code>ppmRewrite.xml</code><br>
 mapping examples to rewrite the urls</li>
 </ul>
 </li>
 <li><code>ppmp-validate-context.xml</code><br>
-A simple validation route for PPMP messages that can be reused in many other routes.</li>
+A simple validation route for Production Performance Management Protocol messages that can be reused in many other routes.</li>
 <li><code>psi6000-transform-context.xml</code><br>
-A more advanced example of converting a psi6000 JSON format, converting it to plain old java object (POJO), transforming that to PPMP POJOs (using <a href="https://github.com/eclipse/unide.java">unide.java</a>) and forwarding these to actual REST endpoints</li>
+A more advanced example of converting a psi6000 JSON format, converting it to plain old java object (POJO), transforming that to Production Performance Management Protocol POJOs (using <a href="https://github.com/eclipse/unide.java">unide.java</a>) and forwarding these to actual REST endpoints</li>
 <li><code>kistler.xml</code><br>
-This example takes html files with a structure similar to the test file in <a href="https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement/blob/master/camel-integrator/src/test/data/00000855.html"><code>src/test/data/00000855.html</code></a>, cleans the html structure, retrieves the relevant parts via <a href="https://en.wikipedia.org/wiki/XPath">XPath</a> and creates a PPMP process message out of that</li>
+This example takes html files with a structure similar to the test file in <a href="https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement/blob/master/camel-integrator/src/test/data/00000855.html"><code>src/test/data/00000855.html</code></a>, cleans the html structure, retrieves the relevant parts via <a href="https://en.wikipedia.org/wiki/XPath">XPath</a> and creates a Production Performance Management Protocol process message out of that</li>
 <li><code>application.properties</code><br>
 Contains key/value pairs that can be used in the camel context configurations.</li>
 <li><code>log4j.properties</code><br>
@@ -183,18 +183,18 @@
 </code></pre>
 <h1>Summary</h1>
 <p>The provided camel project template facilitates the creation of simple connectors. You can download it, modify or extend it, package the integrator to a zip file and deploy it on a target server. The included scripts help registering the integrator as an operating system service to run 24/7.</p>
-</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2018/3/26/Release-0.2.0" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>Unide 0.2.0 released</span></a></div> <div class="column"><a href="/unide/blog/2019/3/1/Version-3" class="button is-fullwidth"><span>PPMP Version 3 release candidate</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">
+</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2018/3/26/Release-0.2.0" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>Unide 0.2.0 released</span></a></div> <div class="column"><a href="/unide/blog/2019/3/1/Version-3" class="button is-fullwidth"><span>Protocol Version 3 release candidate</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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation" class="nuxt-link-exact-active nuxt-link-active">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -237,6 +237,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"Template-for-PPMP-transformation",content:'<h1>Quick start</h1>\n<p>In <a href="https://www.eclipse.org/unide/blog/2018/2/11/Transform-PPMP-with-camel/">a previous blog post</a>, I have already introduced Apache Camel as a tool to transform to PPMP. In this post, I want to dive a little deeper to get you started with your own transformation.<br>\nYou can find corresponding source code with some transformation examples <a href="https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement/tree/master/camel-integrator">in the repository of the Eclipse PPM Testbed</a>. After download or checkout of the project, you can easily package everything necessary for an installation via <a href="https://maven.apache.org/">Apache Maven</a> and java 8+:</p>\n<pre class="language-bash"><code class="language-bash"><span class="token function">git</span> clone https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement.git\n<span class="token function">cd</span> eclipseiot-testbed-productionperformancemanagement\n<span class="token function">cd</span> camel-integrator\nmvn package\n</code></pre>\n<p>After successful build, you should get a zip file at <code>target/camel-integrator-*-assembly.zip</code> with the following content</p>\n<ul>\n<li><code>bin</code><br>\nThe IntegratorStarter* files for Windows and Linux can be used to start the integrator manually. WinServiceInstaller.bat und WinServiceUninstaller.bat can be executed with Admin permissions in Windows to register/unregister this java application as Windows Service called &quot;Integrator Service&quot;.</li>\n<li><code>conf</code><br>\nThis is where the main configuration file <code>application-context.xml</code>, further included spring xml configurations, as well as the configuration for logging <code>log4j.properties</code> and a key-value-file for quick configuration <code>application.properties</code> can be found. After modification of any of them, the integrator should be restarted.</li>\n<li><code>lib</code><br>\nContains all java dependencies and their dependencies as individual jar files</li>\n<li><code>log</code><br>\nAfter the first start, you will find an additional directory that contains the logs of every execution, as defined in the <code>conf/log4j.properties</code> file.</li>\n</ul>\n<p>So this <code>camel-integrator-*-assembly.zip</code> is all you need, ready to being shipped and installed in your target system.</p>\n<h1>How can I modify this?</h1>\n<p>In the <code>conf</code> folder of the output or <code>src/main/resources</code> src folder, you\'ll find multiple examples on how to use Apache Camel with Production Performance Management Protocol. Most of the examples are based on <a href="https://github.com/apache/camel/blob/master/components/camel-spring/src/main/docs/spring.adoc">spring xml</a>.<br>\nThe most important terms to understand them are:</p>\n<table>\n<thead>\n<tr>\n<th>xml tag</th>\n<th>meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bean</td>\n<td>additional functionality, coded as java class / function</td>\n</tr>\n<tr>\n<td>camelContext</td>\n<td>the main, camel specific configurations</td>\n</tr>\n<tr>\n<td>route</td>\n<td>describes the data flow as process</td>\n</tr>\n<tr>\n<td>from / to</td>\n<td>entry / exit points for the data flow. This is also, were external systems are accessed via <a href="https://github.com/apache/camel/tree/camel-2.21.0/components">components</a></td>\n</tr>\n<tr>\n<td>onException</td>\n<td>error handling for the data flow</td>\n</tr>\n<tr>\n<td>pipeline, multicast, ...</td>\n<td>routing of data via <a href="http://camel.apache.org/enterprise-integration-patterns.html">Enterprise Integration pattern</a></td>\n</tr>\n</tbody>\n</table>\n<p>Among others, you\'ll find:</p>\n<div class="card figure is-pulled-right">\n\t<div class="card-image">\n\t\t<figure class="image">\n\t\t\t<img alt="html log file" title="html log file" src="/unide/images/blog/Transform-PPMP-with-camel-2-logfile.png"></img>\n\t\t</figure>\n\t</div>\n\t<div class="card-content">\n\t\thtml logfile before transformation to PPMP\n\t</div>\n</div>\n<ul>\n<li><code>application-context.xml</code><br>\nMain entry file to start camel routes. It contains a general PPMP validation REST endpoint that reuses the route from <code>ppmp-validate-context.xml</code></li>\n<li><code>mqtt-context.xml</code><br>\nA simple example of converting transport protocol (mqtt to REST), without looking at the payload</li>\n<li><code>ppmp-splitAndRewrite-context.xml</code><br>\nShows how to receive (PPMP-) payload via different REST paths (/rest or /ppm), and each forwarding to two seperate endpoints (/rest and /ppm)\n<ul>\n<li><code>ppmpRewrite.xml</code> and <code>ppmRewrite.xml</code><br>\nmapping examples to rewrite the urls</li>\n</ul>\n</li>\n<li><code>ppmp-validate-context.xml</code><br>\nA simple validation route for PPMP messages that can be reused in many other routes.</li>\n<li><code>psi6000-transform-context.xml</code><br>\nA more advanced example of converting a psi6000 JSON format, converting it to plain old java object (POJO), transforming that to PPMP POJOs (using <a href="https://github.com/eclipse/unide.java">unide.java</a>) and forwarding these to actual REST endpoints</li>\n<li><code>kistler.xml</code><br>\nThis example takes html files with a structure similar to the test file in <a href="https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement/blob/master/camel-integrator/src/test/data/00000855.html"><code>src/test/data/00000855.html</code></a>, cleans the html structure, retrieves the relevant parts via <a href="https://en.wikipedia.org/wiki/XPath">XPath</a> and creates a PPMP process message out of that</li>\n<li><code>application.properties</code><br>\nContains key/value pairs that can be used in the camel context configurations.</li>\n<li><code>log4j.properties</code><br>\nThe configuration for logging. For testing purposes, the log4j.properties in /src/test/resources is used.</li>\n</ul>\n<p>In order to get familiar with these transformations, I suggest you:</p>\n<ul>\n<li>open the <code>application-context.xml</code> in your favorite editor</li>\n<li>remove the <code>&lt;import .../&gt;</code> statements</li>\n<li>add your own <code>&lt;route&gt;...&lt;/route&gt;</code>, maybe as simple as<pre class="language-xml"><code class="language-xml">  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>route</span><span class="token punctuation">></span></span>\n  \t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>from</span> <span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>jetty:http://0.0.0.0:9090/<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n  \t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>setBody</span><span class="token punctuation">></span></span>\n  \t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>simple</span><span class="token punctuation">></span></span>hello world!<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>simple</span><span class="token punctuation">></span></span>\n  \t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>setBody</span><span class="token punctuation">></span></span>\n  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>route</span><span class="token punctuation">></span></span>\n</code></pre>\n</li>\n<li>start a run directly (with bundling to a zip file) with:<pre class="language-bash"><code class="language-bash">  mvn exec:java\n</code></pre>\n</li>\n<li>and review the result. With the example above, just open the url <a href="http://localhost:9090">http://localhost:9090</a> and see the <code>hello world!</code> in your browser</li>\n</ul>\n<p>If you prefer a visual model of these camel xml definitions, you could also make use of <a href="https://tools.jboss.org/features/fusetools.html">JBoss Fuse Tooling</a> which is available for <a href="https://projects.eclipse.org/releases/oxygen">Eclipse Workbench 4.3+</a> through <a href="https://marketplace.eclipse.org/content/jboss-tools">the Marketplace</a>. Be aware that this might cause additional overhead.</p>\n<div class="card figure">\n\t<div class="card-image">\n\t\t<figure class="image">\n\t\t\t<img alt="JBoss Tools" title="JBoss Tools for Eclipse Workbench" src="/unide/images/blog/Transform-PPMP-with-camel-2-eclipse.png"></img>\n\t\t</figure>\n\t</div>\n\t<div class="card-content">\n\t\tJBoss Tools for Eclipse Workbench\n\t</div>\n</div>\n<p>If you want to make use of any other of the (as of camel 2.21.0) <a href="https://github.com/apache/camel/tree/camel-2.21.0/components">281+ components</a>, you should add the respective maven dependency to the <code>pom.xml</code>. For example:</p>\n<pre class="language-xml"><code class="language-xml"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>project</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://maven.apache.org/POM/4.0.0<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xsi</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://www.w3.org/2001/XMLSchema-instance<span class="token punctuation">"</span></span>\n\t<span class="token attr-name"><span class="token namespace">xsi:</span>schemaLocation</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t...\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>dependencies</span><span class="token punctuation">></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>dependency</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>groupId</span><span class="token punctuation">></span></span>org.apache.camel<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>groupId</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>artifactId</span><span class="token punctuation">></span></span>camel-amqp<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>artifactId</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>version</span><span class="token punctuation">></span></span>${camel.version}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>version</span><span class="token punctuation">></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>dependency</span><span class="token punctuation">></span></span>\n\t...\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>dependencies</span><span class="token punctuation">></span></span>\n\t...\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>project</span><span class="token punctuation">></span></span>\n</code></pre>\n<h1>Testing</h1>\n<p>Testing is an important part of the development cycle, especially for the core components that have to work reliably in a production environment.<br>\nThe project includes example tests in the <code>src/test</code> folder:</p>\n<ul>\n<li><code>java</code><br>\ncontains the actual java unit tests that make use of <a href="https://github.com/apache/camel/blob/61a58836da57bab38ce719cbd1effd36253687a4/docs/user-manual/en/spring-testing.adoc"><code>CamelSpringTestSupport</code></a> to wire xml CamelContext configuration, test data and expected results together</li>\n<li><code>resources</code><br>\ncontains the spring xml configuration that is used by the java test classes and resamble the actual configurations from <code>src/main/resources</code></li>\n<li><code>data</code><br>\ncontains testdata for the data flows and the transformation</li>\n</ul>\n<p>Tests can easily be run from within an IDE (eclipse, visual code studio etc.) or via commandline</p>\n<pre class="language-bash"><code class="language-bash">mvn <span class="token function">test</span>\n</code></pre>\n<p>You will see the output of the test runs. If it looks like this, it works as expected:</p>\n<pre class="language-bash"><code class="language-bash">Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.846 sec\n\nResults <span class="token keyword">:</span>\n\nTests run: 3, Failures: 0, Errors: 0, Skipped: 0\n\n<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> ------------------------------------------------------------------------\n<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> BUILD SUCCESS\n<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> ------------------------------------------------------------------------\n<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> Total time: 32.267 s\n<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> Finished at: 2018-04-09T15:25:25+02:00\n<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> Final Memory: 25M/85M\n<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> ------------------------------------------------------------------------\n</code></pre>\n<h1>Summary</h1>\n<p>The provided camel project template facilitates the creation of simple connectors. You can download it, modify or extend it, package the integrator to a zip file and deploy it on a target server. The included scripts help registering the integrator as an operating system service to run 24/7.</p>\n',url:"/blog/2018/9/4/Template-for-PPMP-transformation",title:"PPMP Use Cases: Template for PPMP transformation",date:new Date(15360192e5),tags:["use cases"],prev:{url:"/blog/2018/3/26/Release-0.2.0",title:"Unide 0.2.0 released"},next:{url:"/blog/2019/3/1/Version-3",title:"PPMP Version 3 release candidate"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/c3e469380ccd51a92bb6.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"Template-for-PPMP-transformation",content:'<h1>Quick start</h1>\n<p>In <a href="https://www.eclipse.org/unide/blog/2018/2/11/Transform-PPMP-with-camel/">a previous blog post</a>, I have already introduced Apache Camel as a tool to transform to the Production Performance Management Protocol. In this post, I want to dive a little deeper to get you started with your own transformation.<br>\nYou can find corresponding source code with some transformation examples <a href="https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement/tree/master/camel-integrator">in the repository of the Eclipse PPM Testbed</a>. After download or checkout of the project, you can easily package everything necessary for an installation via <a href="https://maven.apache.org/">Apache Maven</a> and java 8+:</p>\n<pre class="language-bash"><code class="language-bash"><span class="token function">git</span> clone https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement.git\n<span class="token function">cd</span> eclipseiot-testbed-productionperformancemanagement\n<span class="token function">cd</span> camel-integrator\nmvn package\n</code></pre>\n<p>After successful build, you should get a zip file at <code>target/camel-integrator-*-assembly.zip</code> with the following content</p>\n<ul>\n<li><code>bin</code><br>\nThe IntegratorStarter* files for Windows and Linux can be used to start the integrator manually. WinServiceInstaller.bat und WinServiceUninstaller.bat can be executed with Admin permissions in Windows to register/unregister this java application as Windows Service called &quot;Integrator Service&quot;.</li>\n<li><code>conf</code><br>\nThis is where the main configuration file <code>application-context.xml</code>, further included spring xml configurations, as well as the configuration for logging <code>log4j.properties</code> and a key-value-file for quick configuration <code>application.properties</code> can be found. After modification of any of them, the integrator should be restarted.</li>\n<li><code>lib</code><br>\nContains all java dependencies and their dependencies as individual jar files</li>\n<li><code>log</code><br>\nAfter the first start, you will find an additional directory that contains the logs of every execution, as defined in the <code>conf/log4j.properties</code> file.</li>\n</ul>\n<p>So this <code>camel-integrator-*-assembly.zip</code> is all you need, ready to being shipped and installed in your target system.</p>\n<h1>How can I modify this?</h1>\n<p>In the <code>conf</code> folder of the output or <code>src/main/resources</code> src folder, you\'ll find multiple examples on how to use Apache Camel with Production Performance Management Protocol. Most of the examples are based on <a href="https://github.com/apache/camel/blob/master/components/camel-spring/src/main/docs/spring.adoc">spring xml</a>.<br>\nThe most important terms to understand them are:</p>\n<table>\n<thead>\n<tr>\n<th>xml tag</th>\n<th>meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bean</td>\n<td>additional functionality, coded as java class / function</td>\n</tr>\n<tr>\n<td>camelContext</td>\n<td>the main, camel specific configurations</td>\n</tr>\n<tr>\n<td>route</td>\n<td>describes the data flow as process</td>\n</tr>\n<tr>\n<td>from / to</td>\n<td>entry / exit points for the data flow. This is also, were external systems are accessed via <a href="https://github.com/apache/camel/tree/camel-2.21.0/components">components</a></td>\n</tr>\n<tr>\n<td>onException</td>\n<td>error handling for the data flow</td>\n</tr>\n<tr>\n<td>pipeline, multicast, ...</td>\n<td>routing of data via <a href="http://camel.apache.org/enterprise-integration-patterns.html">Enterprise Integration pattern</a></td>\n</tr>\n</tbody>\n</table>\n<p>Among others, you\'ll find:</p>\n<div class="card figure is-pulled-right">\n\t<div class="card-image">\n\t\t<figure class="image">\n\t\t\t<img alt="html log file" title="html log file" src="/unide/images/blog/Transform-PPMP-with-camel-2-logfile.png"></img>\n\t\t</figure>\n\t</div>\n\t<div class="card-content">\n\t\thtml logfile before transformation to the Production Performance Management Protocol\n\t</div>\n</div>\n<ul>\n<li><code>application-context.xml</code><br>\nMain entry file to start camel routes. It contains a general Production Performance Management Protocol validation REST endpoint that reuses the route from <code>ppmp-validate-context.xml</code></li>\n<li><code>mqtt-context.xml</code><br>\nA simple example of converting transport protocol (mqtt to REST), without looking at the payload</li>\n<li><code>ppmp-splitAndRewrite-context.xml</code><br>\nShows how to receive (Production Performance Management Protocol-) payload via different REST paths (/rest or /ppm), and each forwarding to two seperate endpoints (/rest and /ppm)\n<ul>\n<li><code>ppmpRewrite.xml</code> and <code>ppmRewrite.xml</code><br>\nmapping examples to rewrite the urls</li>\n</ul>\n</li>\n<li><code>ppmp-validate-context.xml</code><br>\nA simple validation route for Production Performance Management Protocol messages that can be reused in many other routes.</li>\n<li><code>psi6000-transform-context.xml</code><br>\nA more advanced example of converting a psi6000 JSON format, converting it to plain old java object (POJO), transforming that to Production Performance Management Protocol POJOs (using <a href="https://github.com/eclipse/unide.java">unide.java</a>) and forwarding these to actual REST endpoints</li>\n<li><code>kistler.xml</code><br>\nThis example takes html files with a structure similar to the test file in <a href="https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement/blob/master/camel-integrator/src/test/data/00000855.html"><code>src/test/data/00000855.html</code></a>, cleans the html structure, retrieves the relevant parts via <a href="https://en.wikipedia.org/wiki/XPath">XPath</a> and creates a Production Performance Management Protocol process message out of that</li>\n<li><code>application.properties</code><br>\nContains key/value pairs that can be used in the camel context configurations.</li>\n<li><code>log4j.properties</code><br>\nThe configuration for logging. For testing purposes, the log4j.properties in /src/test/resources is used.</li>\n</ul>\n<p>In order to get familiar with these transformations, I suggest you:</p>\n<ul>\n<li>open the <code>application-context.xml</code> in your favorite editor</li>\n<li>remove the <code>&lt;import .../&gt;</code> statements</li>\n<li>add your own <code>&lt;route&gt;...&lt;/route&gt;</code>, maybe as simple as<pre class="language-xml"><code class="language-xml">  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>route</span><span class="token punctuation">></span></span>\n  \t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>from</span> <span class="token attr-name">uri</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>jetty:http://0.0.0.0:9090/<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>\n  \t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>setBody</span><span class="token punctuation">></span></span>\n  \t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>simple</span><span class="token punctuation">></span></span>hello world!<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>simple</span><span class="token punctuation">></span></span>\n  \t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>setBody</span><span class="token punctuation">></span></span>\n  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>route</span><span class="token punctuation">></span></span>\n</code></pre>\n</li>\n<li>start a run directly (with bundling to a zip file) with:<pre class="language-bash"><code class="language-bash">  mvn exec:java\n</code></pre>\n</li>\n<li>and review the result. With the example above, just open the url <a href="http://localhost:9090">http://localhost:9090</a> and see the <code>hello world!</code> in your browser</li>\n</ul>\n<p>If you prefer a visual model of these camel xml definitions, you could also make use of <a href="https://tools.jboss.org/features/fusetools.html">JBoss Fuse Tooling</a> which is available for <a href="https://projects.eclipse.org/releases/oxygen">Eclipse Workbench 4.3+</a> through <a href="https://marketplace.eclipse.org/content/jboss-tools">the Marketplace</a>. Be aware that this might cause additional overhead.</p>\n<div class="card figure">\n\t<div class="card-image">\n\t\t<figure class="image">\n\t\t\t<img alt="JBoss Tools" title="JBoss Tools for Eclipse Workbench" src="/unide/images/blog/Transform-PPMP-with-camel-2-eclipse.png"></img>\n\t\t</figure>\n\t</div>\n\t<div class="card-content">\n\t\tJBoss Tools for Eclipse Workbench\n\t</div>\n</div>\n<p>If you want to make use of any other of the (as of camel 2.21.0) <a href="https://github.com/apache/camel/tree/camel-2.21.0/components">281+ components</a>, you should add the respective maven dependency to the <code>pom.xml</code>. For example:</p>\n<pre class="language-xml"><code class="language-xml"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>project</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://maven.apache.org/POM/4.0.0<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xsi</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://www.w3.org/2001/XMLSchema-instance<span class="token punctuation">"</span></span>\n\t<span class="token attr-name"><span class="token namespace">xsi:</span>schemaLocation</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>\n\t...\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>dependencies</span><span class="token punctuation">></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>dependency</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>groupId</span><span class="token punctuation">></span></span>org.apache.camel<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>groupId</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>artifactId</span><span class="token punctuation">></span></span>camel-amqp<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>artifactId</span><span class="token punctuation">></span></span>\n\t\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>version</span><span class="token punctuation">></span></span>${camel.version}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>version</span><span class="token punctuation">></span></span>\n\t\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>dependency</span><span class="token punctuation">></span></span>\n\t...\n\t<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>dependencies</span><span class="token punctuation">></span></span>\n\t...\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>project</span><span class="token punctuation">></span></span>\n</code></pre>\n<h1>Testing</h1>\n<p>Testing is an important part of the development cycle, especially for the core components that have to work reliably in a production environment.<br>\nThe project includes example tests in the <code>src/test</code> folder:</p>\n<ul>\n<li><code>java</code><br>\ncontains the actual java unit tests that make use of <a href="https://github.com/apache/camel/blob/61a58836da57bab38ce719cbd1effd36253687a4/docs/user-manual/en/spring-testing.adoc"><code>CamelSpringTestSupport</code></a> to wire xml CamelContext configuration, test data and expected results together</li>\n<li><code>resources</code><br>\ncontains the spring xml configuration that is used by the java test classes and resamble the actual configurations from <code>src/main/resources</code></li>\n<li><code>data</code><br>\ncontains testdata for the data flows and the transformation</li>\n</ul>\n<p>Tests can easily be run from within an IDE (eclipse, visual code studio etc.) or via commandline</p>\n<pre class="language-bash"><code class="language-bash">mvn <span class="token function">test</span>\n</code></pre>\n<p>You will see the output of the test runs. If it looks like this, it works as expected:</p>\n<pre class="language-bash"><code class="language-bash">Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.846 sec\n\nResults <span class="token keyword">:</span>\n\nTests run: 3, Failures: 0, Errors: 0, Skipped: 0\n\n<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> ------------------------------------------------------------------------\n<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> BUILD SUCCESS\n<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> ------------------------------------------------------------------------\n<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> Total time: 32.267 s\n<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> Finished at: 2018-04-09T15:25:25+02:00\n<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> Final Memory: 25M/85M\n<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> ------------------------------------------------------------------------\n</code></pre>\n<h1>Summary</h1>\n<p>The provided camel project template facilitates the creation of simple connectors. You can download it, modify or extend it, package the integrator to a zip file and deploy it on a target server. The included scripts help registering the integrator as an operating system service to run 24/7.</p>\n',url:"/blog/2018/9/4/Template-for-PPMP-transformation",title:"Use Cases: Template for transformation",date:new Date(15360192e5),tags:["use cases"],prev:{url:"/blog/2018/3/26/Release-0.2.0",title:"Unide 0.2.0 released"},next:{url:"/blog/2019/3/1/Version-3",title:"Protocol Version 3 release candidate"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/2918aa6661dd624eef70.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2018/9/4/index.html b/blog/2018/9/4/index.html
index 58ee5ae..f7c22ee 100644
--- a/blog/2018/9/4/index.html
+++ b/blog/2018/9/4/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - October 04, 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - October 04, 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -17,21 +17,21 @@
     </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="blog column is-8"><h1 class="title is-3">
     October 04, 2018
   </h1> <ul><li><h2 class="title is-4"><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-          PPMP Use Cases: Template for PPMP transformation
+          Use Cases: Template for transformation
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation"><i class="fa fa-calendar"></i>  
           04
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/9/4/Template-for-PPMP-transformation",title:"PPMP Use Cases: Template for PPMP transformation",date:new Date(15360192e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/9/4/Template-for-PPMP-transformation",title:"Use Cases: Template for transformation",date:new Date(15360192e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2018/9/index.html b/blog/2018/9/index.html
index 8f6d8eb..c1c70f0 100644
--- a/blog/2018/9/index.html
+++ b/blog/2018/9/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - October 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - October 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -17,21 +17,21 @@
     </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="blog column is-8"><h1 class="title is-3">
     October 2018
   </h1> <ul><li><h2 class="title is-4"><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-          PPMP Use Cases: Template for PPMP transformation
+          Use Cases: Template for transformation
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation"><i class="fa fa-calendar"></i>  
           04
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/9/4/Template-for-PPMP-transformation",title:"PPMP Use Cases: Template for PPMP transformation",date:new Date(15360192e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/9/4/Template-for-PPMP-transformation",title:"Use Cases: Template for transformation",date:new Date(15360192e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2018/index.html b/blog/2018/index.html
index 77126d7..46f6cd9 100644
--- a/blog/2018/index.html
+++ b/blog/2018/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - 2018</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -17,7 +17,7 @@
     </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="blog column is-8"><h1 class="title is-3">
     2018
   </h1> <ul><li><h2 class="title is-4"><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-          PPMP Use Cases: Template for PPMP transformation
+          Use Cases: Template for transformation
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation"><i class="fa fa-calendar"></i>  
           September 04
         </a></h3></li><li><h2 class="title is-4"><a href="/unide/blog/2018/3/26/Release-0.2.0">
@@ -25,11 +25,11 @@
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2018/3/26/Release-0.2.0"><i class="fa fa-calendar"></i>  
           March 26, 12:39
         </a></h3></li><li><h2 class="title is-4"><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-          PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+          Use Cases: Unide and the Eclipse Testbed
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2018/2/13/grinding-machine-scenario"><i class="fa fa-calendar"></i>  
           February 13
         </a></h3></li><li><h2 class="title is-4"><a href="/unide/blog/2018/2/11/Transform-PPMP-with-camel">
-          PPMP Use Cases: Simple Transformation with Apache Camel
+          Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2018/2/11/Transform-PPMP-with-camel"><i class="fa fa-calendar"></i>  
           February 11
         </a></h3></li><li><h2 class="title is-4"><a href="/unide/blog/2018/1/26/New-website">
@@ -39,15 +39,15 @@
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -90,6 +90,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/9/4/Template-for-PPMP-transformation",title:"PPMP Use Cases: Template for PPMP transformation",date:new Date(15360192e5)},{url:"/blog/2018/3/26/Release-0.2.0",title:"Unide 0.2.0 released",date:new Date(152206074e4)},{url:"/blog/2018/2/13/grinding-machine-scenario",title:"PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed",date:new Date(151848e7)},{url:"/blog/2018/2/11/Transform-PPMP-with-camel",title:"PPMP Use Cases: Simple Transformation with Apache Camel",date:new Date(15183072e5)},{url:"/blog/2018/1/26/New-website",title:"Updated Website",date:new Date(15169248e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2018/9/4/Template-for-PPMP-transformation",title:"Use Cases: Template for transformation",date:new Date(15360192e5)},{url:"/blog/2018/3/26/Release-0.2.0",title:"Unide 0.2.0 released",date:new Date(152206074e4)},{url:"/blog/2018/2/13/grinding-machine-scenario",title:"Use Cases: Unide and the Eclipse Testbed",date:new Date(151848e7)},{url:"/blog/2018/2/11/Transform-PPMP-with-camel",title:"Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel",date:new Date(15183072e5)},{url:"/blog/2018/1/26/New-website",title:"Updated Website",date:new Date(15169248e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2019/11/26/Version-3-final/index.html b/blog/2019/11/26/Version-3-final/index.html
index 07b04e6..93f6077 100644
--- a/blog/2019/11/26/Version-3-final/index.html
+++ b/blog/2019/11/26/Version-3-final/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - PPMP Version 3 final</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
+    <title data-n-head="true">Eclipse unide - Protocol v3 final</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -15,14 +15,14 @@
     </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">
-    PPMP Version 3 final
+    Protocol v3 final
   </h1> <h2 class="subtitle is-6"><i class="fa fa-calendar"></i>  
     11/26/19
-  </h2> <div class="content"><div><p>Version 3 of PPMP (Production Performance Management Protocol) has been finalized!<br>
+  </h2> <div class="content"><div><p>Version 3 of the Production Performance Management Protocol (Production Performance Management Protocol) has been finalized!<br>
 Thanks to CONTACT Software, Balluff GmbH, Bosch Plant Blaichach and Bosch Connected Industry for their proposals, ideas and patience.<br>
 The major improvements in Version 3 include consistent structure and naming, context for measurements and better extensibility.</p>
 <h1>Easy validation</h1>
-<p>Did you know that you can easily validate your PPMP payload against the published online version of PPMP? For example, <a href="https://www.jsonschemavalidator.net/">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the PPMP specification as a <code>$ref</code> in the schema. For example:</p>
+<p>Did you know that you can easily validate your payload against the published online version of Production Performance Management Protocol? For example, <a href="https://www.jsonschemavalidator.net/">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the Production Performance Management Protocol specification as a <code>$ref</code> in the schema. For example:</p>
 <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
   <span class="token property">"$ref"</span><span class="token operator">:</span> <span class="token string">"https://raw.githubusercontent.com/eclipse/unide/master/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json"</span>
 <span class="token punctuation">}</span>
@@ -62,18 +62,18 @@
 <code>shutoffValues</code> can be expressed as <code>specialValues</code> with a meaningful name, <code>shutoffPhase</code> is the measurement with the latest timestamp <code>ts</code>.</li>
 <li>Same improvements in measurements</li>
 </ul>
-</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2019/3/1/Version-3" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>PPMP Version 3 release candidate</span></a></div> <!----></div></div> <div class="sidebar column is-3 is-offset-1"><div class="recentPosts"><h4 class="subtitle is-5">
+</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2019/3/1/Version-3" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>Protocol Version 3 release candidate</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/2019/11/26/Version-3-final" class="nuxt-link-exact-active nuxt-link-active">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11" class="nuxt-link-active">
@@ -116,6 +116,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"Version-3-final",content:"<p>Version 3 of PPMP (Production Performance Management Protocol) has been finalized!<br>\nThanks to CONTACT Software, Balluff GmbH, Bosch Plant Blaichach and Bosch Connected Industry for their proposals, ideas and patience.<br>\nThe major improvements in Version 3 include consistent structure and naming, context for measurements and better extensibility.</p>\n<h1>Easy validation</h1>\n<p>Did you know that you can easily validate your PPMP payload against the published online version of PPMP? For example, <a href=\"https://www.jsonschemavalidator.net/\">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the PPMP specification as a <code>$ref</code> in the schema. For example:</p>\n<pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"$ref\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://raw.githubusercontent.com/eclipse/unide/master/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json\"</span>\n<span class=\"token punctuation\">}</span>\n</code></pre>\n<h1>Changes</h1>\n<h2>General</h2>\n<ul>\n<li><code>content-spec</code> is now &quot;urn:spec://eclipse.org/unide/&lt; type &gt;-message#<strong>v3</strong>&quot;</li>\n<li><code>mode</code> and <code>state</code> are introduced in <code>device</code> and replace v2's <code>operationalMode</code>, which was found to not clearly differentiate the functional mode and technical state.</li>\n<li>A common <code>id</code> is used and replaces different spellings in <code>deviceID</code>, <code>partID</code>, <code>program.id</code>.</li>\n<li><code>additionalData</code> in the various sections is used for any kind of not-specified data, that should be honored by the receiving party as context information. Where v2's <code>metaData</code> had to be key/String pairs, <code>additionalData</code> can also be complex JSON objects.</li>\n<li>In addition to <code>additionalData</code>, it is possible to include completely undefined keys in most places, in order to introduce custom or future keys. With it, it's e.g. possible to define and test currently meaningless 'window' key as an extension to limits.</li>\n<li>A common definition.json schema is used for sections that are used in multiple telegrams. With the help of JSON schema 'anyOf', sections inherit and can extend from these base definitions.</li>\n</ul>\n<h2><code>messages</code></h2>\n<ul>\n<li>Messages can have a <code>state</code> to indicate if this alert newly appeared (<code>NEW</code>) or disappeared (<code>ENDED</code>). Together with a common <code>code</code>, it is now possible e.g. to correlate events like &quot;<em>pressure too high</em>&quot; and &quot;<em>pressure not too high anymore</em>&quot;.</li>\n<li>What was before <code>type</code> has now been renamed to <code>source</code> to indicate if the message comes from the <code>DEVICE</code> itself or from the general infrastructure <code>TECHNICAL_INFO</code>.</li>\n<li>The <code>type</code> in v3 indicates the debug level of the message (<code>INFO</code>, <code>WARNING</code>, <code>ERROR</code>, <code>UNKNOWN</code>) and complements <code>severity</code> for describing urgency and relevance of a message.</li>\n</ul>\n<h2><code>measurements</code></h2>\n<ul>\n<li>The optional <code>context</code> section contains information on how to interpret the measurements. This includes\n<ul>\n<li>The field <code>type</code> (Number, String or Boolean value) indicates which format the <values> of a series have.</li>\n<li>The <code>unit</code> key can be used to describe the unit of measurement. There are different understandings and standardizations for units ('C' stands for Coulomb, not Celsius), like <a href=\"https://en.wikipedia.org/wiki/International_System_of_Units\">International System of Units</a>, <a href=\"https://tools.ietf.org/html/draft-ietf-core-senml-14#section-12.1\">SenML</a>, <a href=\"https://www.iso.org/obp/ui/#iso:std:iso:80000:-1:ed-1:v1:en\">ISO 80000-1:2009</a>, etc.. The <code>unit</code> key here is a string without further restriction. If that is needed, it can be specified via an URI in <code>namespace</code>.</li>\n<li><code>namespace</code> may contain an URI to identify further detail on the values in this measurement section. This can be a description of units, lengths or naming conventions for measurement points, but also a reference to a semantic model.</li>\n<li>Each entry in <code>limits</code> can be constant or an array of values. If constant, it applies to all corresponding measurements in <code>series</code>. If an array of the same length than the corresponding <code>series</code> is provided, each entry limits the measurement at the respective position. 'null' can be used to skip a limit for an individual measurement.</li>\n</ul>\n</li>\n<li><code>series</code> can contain other than numeric measurements if <code>context.type</code> contains any of 'BASE64', 'BOOLEAN', 'NUMBER', 'STRING', 'REF' or 'OTHER', the corresponding measurement in series are represented in this type ('REF', 'OTHER' and 'BASE64' are Strings). This way for example, even small base64 encoded binary data, as send from iolink devices, can be included. 'REF' could be used in multipart messages to reference to other sections or even external content.</li>\n<li><code>time</code> field replaces the v2 <code>$_time</code> field, which is difficult to represent in some programming languages. Note that time is not an Integer anymore but a JSON number, to allow sub-millisecond values.</li>\n</ul>\n<h2><code>processes</code></h2>\n<ul>\n<li>No more <code>shutoffValues</code> and <code>shutoffPhase</code><br>\n<code>shutoffValues</code> can be expressed as <code>specialValues</code> with a meaningful name, <code>shutoffPhase</code> is the measurement with the latest timestamp <code>ts</code>.</li>\n<li>Same improvements in measurements</li>\n</ul>\n",url:"/blog/2019/11/26/Version-3-final",title:"PPMP Version 3 final",date:new Date(15747264e5),tags:["v3"],prev:{url:"/blog/2019/3/1/Version-3",title:"PPMP Version 3 release candidate"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/c3e469380ccd51a92bb6.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"Version-3-final",content:"<p>Version 3 of the Production Performance Management Protocol (Production Performance Management Protocol) has been finalized!<br>\nThanks to CONTACT Software, Balluff GmbH, Bosch Plant Blaichach and Bosch Connected Industry for their proposals, ideas and patience.<br>\nThe major improvements in Version 3 include consistent structure and naming, context for measurements and better extensibility.</p>\n<h1>Easy validation</h1>\n<p>Did you know that you can easily validate your payload against the published online version of Production Performance Management Protocol? For example, <a href=\"https://www.jsonschemavalidator.net/\">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the Production Performance Management Protocol specification as a <code>$ref</code> in the schema. For example:</p>\n<pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"$ref\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://raw.githubusercontent.com/eclipse/unide/master/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json\"</span>\n<span class=\"token punctuation\">}</span>\n</code></pre>\n<h1>Changes</h1>\n<h2>General</h2>\n<ul>\n<li><code>content-spec</code> is now &quot;urn:spec://eclipse.org/unide/&lt; type &gt;-message#<strong>v3</strong>&quot;</li>\n<li><code>mode</code> and <code>state</code> are introduced in <code>device</code> and replace v2's <code>operationalMode</code>, which was found to not clearly differentiate the functional mode and technical state.</li>\n<li>A common <code>id</code> is used and replaces different spellings in <code>deviceID</code>, <code>partID</code>, <code>program.id</code>.</li>\n<li><code>additionalData</code> in the various sections is used for any kind of not-specified data, that should be honored by the receiving party as context information. Where v2's <code>metaData</code> had to be key/String pairs, <code>additionalData</code> can also be complex JSON objects.</li>\n<li>In addition to <code>additionalData</code>, it is possible to include completely undefined keys in most places, in order to introduce custom or future keys. With it, it's e.g. possible to define and test currently meaningless 'window' key as an extension to limits.</li>\n<li>A common definition.json schema is used for sections that are used in multiple telegrams. With the help of JSON schema 'anyOf', sections inherit and can extend from these base definitions.</li>\n</ul>\n<h2><code>messages</code></h2>\n<ul>\n<li>Messages can have a <code>state</code> to indicate if this alert newly appeared (<code>NEW</code>) or disappeared (<code>ENDED</code>). Together with a common <code>code</code>, it is now possible e.g. to correlate events like &quot;<em>pressure too high</em>&quot; and &quot;<em>pressure not too high anymore</em>&quot;.</li>\n<li>What was before <code>type</code> has now been renamed to <code>source</code> to indicate if the message comes from the <code>DEVICE</code> itself or from the general infrastructure <code>TECHNICAL_INFO</code>.</li>\n<li>The <code>type</code> in v3 indicates the debug level of the message (<code>INFO</code>, <code>WARNING</code>, <code>ERROR</code>, <code>UNKNOWN</code>) and complements <code>severity</code> for describing urgency and relevance of a message.</li>\n</ul>\n<h2><code>measurements</code></h2>\n<ul>\n<li>The optional <code>context</code> section contains information on how to interpret the measurements. This includes\n<ul>\n<li>The field <code>type</code> (Number, String or Boolean value) indicates which format the <values> of a series have.</li>\n<li>The <code>unit</code> key can be used to describe the unit of measurement. There are different understandings and standardizations for units ('C' stands for Coulomb, not Celsius), like <a href=\"https://en.wikipedia.org/wiki/International_System_of_Units\">International System of Units</a>, <a href=\"https://tools.ietf.org/html/draft-ietf-core-senml-14#section-12.1\">SenML</a>, <a href=\"https://www.iso.org/obp/ui/#iso:std:iso:80000:-1:ed-1:v1:en\">ISO 80000-1:2009</a>, etc.. The <code>unit</code> key here is a string without further restriction. If that is needed, it can be specified via an URI in <code>namespace</code>.</li>\n<li><code>namespace</code> may contain an URI to identify further detail on the values in this measurement section. This can be a description of units, lengths or naming conventions for measurement points, but also a reference to a semantic model.</li>\n<li>Each entry in <code>limits</code> can be constant or an array of values. If constant, it applies to all corresponding measurements in <code>series</code>. If an array of the same length than the corresponding <code>series</code> is provided, each entry limits the measurement at the respective position. 'null' can be used to skip a limit for an individual measurement.</li>\n</ul>\n</li>\n<li><code>series</code> can contain other than numeric measurements if <code>context.type</code> contains any of 'BASE64', 'BOOLEAN', 'NUMBER', 'STRING', 'REF' or 'OTHER', the corresponding measurement in series are represented in this type ('REF', 'OTHER' and 'BASE64' are Strings). This way for example, even small base64 encoded binary data, as send from iolink devices, can be included. 'REF' could be used in multipart messages to reference to other sections or even external content.</li>\n<li><code>time</code> field replaces the v2 <code>$_time</code> field, which is difficult to represent in some programming languages. Note that time is not an Integer anymore but a JSON number, to allow sub-millisecond values.</li>\n</ul>\n<h2><code>processes</code></h2>\n<ul>\n<li>No more <code>shutoffValues</code> and <code>shutoffPhase</code><br>\n<code>shutoffValues</code> can be expressed as <code>specialValues</code> with a meaningful name, <code>shutoffPhase</code> is the measurement with the latest timestamp <code>ts</code>.</li>\n<li>Same improvements in measurements</li>\n</ul>\n",url:"/blog/2019/11/26/Version-3-final",title:"Protocol v3 final",date:new Date(15747264e5),tags:["v3"],prev:{url:"/blog/2019/3/1/Version-3",title:"Protocol Version 3 release candidate"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/2918aa6661dd624eef70.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2019/11/26/index.html b/blog/2019/11/26/index.html
index 4d3f87c..e468fed 100644
--- a/blog/2019/11/26/index.html
+++ b/blog/2019/11/26/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - December 26, 2019</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - December 26, 2019</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -17,21 +17,21 @@
     </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="blog column is-8"><h1 class="title is-3">
     December 26, 2019
   </h1> <ul><li><h2 class="title is-4"><a href="/unide/blog/2019/11/26/Version-3-final">
-          PPMP Version 3 final
+          Protocol v3 final
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2019/11/26/Version-3-final"><i class="fa fa-calendar"></i>  
           26
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11" class="nuxt-link-active">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2019/11/26/Version-3-final",title:"PPMP Version 3 final",date:new Date(15747264e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2019/11/26/Version-3-final",title:"Protocol v3 final",date:new Date(15747264e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2019/11/index.html b/blog/2019/11/index.html
index f8f6941..d049a25 100644
--- a/blog/2019/11/index.html
+++ b/blog/2019/11/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - December 2019</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - December 2019</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -17,21 +17,21 @@
     </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="blog column is-8"><h1 class="title is-3">
     December 2019
   </h1> <ul><li><h2 class="title is-4"><a href="/unide/blog/2019/11/26/Version-3-final">
-          PPMP Version 3 final
+          Protocol v3 final
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2019/11/26/Version-3-final"><i class="fa fa-calendar"></i>  
           26
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11" class="nuxt-link-exact-active nuxt-link-active">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2019/11/26/Version-3-final",title:"PPMP Version 3 final",date:new Date(15747264e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2019/11/26/Version-3-final",title:"Protocol v3 final",date:new Date(15747264e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2019/3/1/Version-3/index.html b/blog/2019/3/1/Version-3/index.html
index 394dd69..affa0a8 100644
--- a/blog/2019/3/1/Version-3/index.html
+++ b/blog/2019/3/1/Version-3/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - PPMP Version 3 release candidate</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
+    <title data-n-head="true">Eclipse unide - Protocol Version 3 release candidate</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/08ee945502042ce842dc.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -15,10 +15,10 @@
     </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">
-    PPMP Version 3 release candidate
+    Protocol Version 3 release candidate
   </h1> <h2 class="subtitle is-6"><i class="fa fa-calendar"></i>  
     03/01/19
-  </h2> <div class="content"><div><p>After a long discussion phase, the PPMP version 3 is finally linked on the specification page. Special thanks to <a href="https://github.com/bgusach">bgusach</a>, <a href="https://github.com/bf-bryants">bf-bryants</a>, <a href="https://github.com/muelsen">muelsen</a> and <a href="https://github.com/alaendle">alaendle</a> for their contributions <a href="https://github.com/eclipse/unide/issues">via github issues</a>!</p>
+  </h2> <div class="content"><div><p>After a long discussion phase, the Production Performance Management Protocol version 3 is finally linked on the specification page. Special thanks to <a href="https://github.com/bgusach">bgusach</a>, <a href="https://github.com/bf-bryants">bf-bryants</a>, <a href="https://github.com/muelsen">muelsen</a> and <a href="https://github.com/alaendle">alaendle</a> for their contributions <a href="https://github.com/eclipse/unide/issues">via github issues</a>!</p>
 <h1>The most important changes</h1>
 <ul>
 <li><code>context</code> section in <code>measurements</code><br>
@@ -42,18 +42,18 @@
 <h1>Next steps</h1>
 <p>The most recent updates and this post should finalize the v3 schema. Vetos with suggestions that find a consensus fairly soon after posting are stil accepted <a href="https://github.com/eclipse/unide/issues">via github issues</a>. Major changes and suggestions should rather be addressed to a v4.</p>
 <p>The bindings and server should be updated to accept and validate v3 as well. After updating further dependencies, creating eclipse CQs and undergoing the release process, everything should be wrapped up in the unide release 0.3.0.</p>
-</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>PPMP Use Cases: Template for PPMP transformation</span></a></div> <div class="column"><a href="/unide/blog/2019/11/26/Version-3-final" class="button is-fullwidth"><span>PPMP Version 3 final</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">
+</div></div> <div class="columns pageNav"><div class="column"><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span> <span>Use Cases: Template for transformation</span></a></div> <div class="column"><a href="/unide/blog/2019/11/26/Version-3-final" class="button is-fullwidth"><span>Protocol v3 final</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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3" class="nuxt-link-exact-active nuxt-link-active">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -96,6 +96,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"Version-3",content:"<p>After a long discussion phase, the PPMP version 3 is finally linked on the specification page. Special thanks to <a href=\"https://github.com/bgusach\">bgusach</a>, <a href=\"https://github.com/bf-bryants\">bf-bryants</a>, <a href=\"https://github.com/muelsen\">muelsen</a> and <a href=\"https://github.com/alaendle\">alaendle</a> for their contributions <a href=\"https://github.com/eclipse/unide/issues\">via github issues</a>!</p>\n<h1>The most important changes</h1>\n<ul>\n<li><code>context</code> section in <code>measurements</code><br>\nThe optional context section ccontains information on how to interpret the measurements. This includes\n<ul>\n<li>the field '<code>type</code>' (Number, String or Boolean value) indicates which format the <code>&lt;values&gt;</code> of a <code>series</code> have.</li>\n<li>The <code>unit</code> key can be used to describe the unit of measurement. There are different understandings and standarizations for units ('C' stands for Coulomb, not Celsius), like <a href=\"https://en.wikipedia.org/wiki/International_System_of_Units\">International System of Units</a>, <a href=\"https://tools.ietf.org/html/draft-ietf-core-senml-14#section-12.1\">SenML</a>, <a href=\"https://www.iso.org/obp/ui/#iso:std:iso:80000:-1:ed-1:v1:en\">ISO 80000-1:2009</a>, etc.. The <code>unit</code> key here is a string without further restriction. If that is needed, it can be specified via an URI in <code>namespace</code>.</li>\n<li><code>namespace</code> may contain an URI to identify further detail on the values in this measurement section. This can be a description of units, lengths or naming conventions for measurement points, but also a reference to a semantic model.</li>\n</ul>\n</li>\n<li><code>series</code> can contain other than numeric measurements<br>\nif <code>context.type</code> contains any of 'BASE64', 'BOOLEAN', 'NUMBER', 'STRING', 'REF' or 'OTHER', the corresponding measurement in <code>series</code> are represented in this type ('REF', 'OTHER' and 'BASE64' are Strings). This way for example, even small base64 encoded binary data, as send from iolink devices, can be included. 'REF' could be used in multipart messages to reference to other sections or even external content.</li>\n<li><code>mode</code> and <code>state</code> are introduced in <code>device</code> and replaces v2's <code>operationalMode</code>, which was found to not clearly diffentiate the functional mode and technical state.</li>\n<li>A common <code>id</code> was used and replaces different spellings in <code>deviceID</code>, <code>partID</code>, <code>program.id</code>.</li>\n<li><code>additionalData</code> in the various sections is used for any kind of not-specified data, that should be included in the telegram. Where v2's <code>metaData</code> had to be key/String pairs, <code>additionalData</code> can also be complex JSON objects.</li>\n<li><code>time</code> field replaces the v2 <code>$_time</code> field, which is difficult to represent in some programming languages. Note that <code>time</code> is not an Integer anymore but a JSON number, to allow sub-millisecond values.</li>\n<li>no more <code>shutoffValues</code> and <code>shutoffPhase</code><br>\n<code>shutoffValues</code> can be expressed as specialValues with a meaningful <code>name</code>, <code>shutoffPhase</code> is the measurement with the latest timestamp <code>ts</code>.</li>\n<li>a common definition.json schema is used for sections that are used in multiple telegrams. With the help of JSON schema 'anyOf', sections inherit and can extend from these base definitions.</li>\n</ul>\n<h1>Next steps</h1>\n<p>The most recent updates and this post should finalize the v3 schema. Vetos with suggestions that find a consensus fairly soon after posting are stil accepted <a href=\"https://github.com/eclipse/unide/issues\">via github issues</a>. Major changes and suggestions should rather be addressed to a v4.</p>\n<p>The bindings and server should be updated to accept and validate v3 as well. After updating further dependencies, creating eclipse CQs and undergoing the release process, everything should be wrapped up in the unide release 0.3.0.</p>\n",url:"/blog/2019/3/1/Version-3",title:"PPMP Version 3 release candidate",date:new Date(15513984e5),tags:["v3"],prev:{url:"/blog/2018/9/4/Template-for-PPMP-transformation",title:"PPMP Use Cases: Template for PPMP transformation"},next:{url:"/blog/2019/11/26/Version-3-final",title:"PPMP Version 3 final"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/c3e469380ccd51a92bb6.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{post:{name:"Version-3",content:"<p>After a long discussion phase, the Production Performance Management Protocol version 3 is finally linked on the specification page. Special thanks to <a href=\"https://github.com/bgusach\">bgusach</a>, <a href=\"https://github.com/bf-bryants\">bf-bryants</a>, <a href=\"https://github.com/muelsen\">muelsen</a> and <a href=\"https://github.com/alaendle\">alaendle</a> for their contributions <a href=\"https://github.com/eclipse/unide/issues\">via github issues</a>!</p>\n<h1>The most important changes</h1>\n<ul>\n<li><code>context</code> section in <code>measurements</code><br>\nThe optional context section ccontains information on how to interpret the measurements. This includes\n<ul>\n<li>the field '<code>type</code>' (Number, String or Boolean value) indicates which format the <code>&lt;values&gt;</code> of a <code>series</code> have.</li>\n<li>The <code>unit</code> key can be used to describe the unit of measurement. There are different understandings and standarizations for units ('C' stands for Coulomb, not Celsius), like <a href=\"https://en.wikipedia.org/wiki/International_System_of_Units\">International System of Units</a>, <a href=\"https://tools.ietf.org/html/draft-ietf-core-senml-14#section-12.1\">SenML</a>, <a href=\"https://www.iso.org/obp/ui/#iso:std:iso:80000:-1:ed-1:v1:en\">ISO 80000-1:2009</a>, etc.. The <code>unit</code> key here is a string without further restriction. If that is needed, it can be specified via an URI in <code>namespace</code>.</li>\n<li><code>namespace</code> may contain an URI to identify further detail on the values in this measurement section. This can be a description of units, lengths or naming conventions for measurement points, but also a reference to a semantic model.</li>\n</ul>\n</li>\n<li><code>series</code> can contain other than numeric measurements<br>\nif <code>context.type</code> contains any of 'BASE64', 'BOOLEAN', 'NUMBER', 'STRING', 'REF' or 'OTHER', the corresponding measurement in <code>series</code> are represented in this type ('REF', 'OTHER' and 'BASE64' are Strings). This way for example, even small base64 encoded binary data, as send from iolink devices, can be included. 'REF' could be used in multipart messages to reference to other sections or even external content.</li>\n<li><code>mode</code> and <code>state</code> are introduced in <code>device</code> and replaces v2's <code>operationalMode</code>, which was found to not clearly diffentiate the functional mode and technical state.</li>\n<li>A common <code>id</code> was used and replaces different spellings in <code>deviceID</code>, <code>partID</code>, <code>program.id</code>.</li>\n<li><code>additionalData</code> in the various sections is used for any kind of not-specified data, that should be included in the telegram. Where v2's <code>metaData</code> had to be key/String pairs, <code>additionalData</code> can also be complex JSON objects.</li>\n<li><code>time</code> field replaces the v2 <code>$_time</code> field, which is difficult to represent in some programming languages. Note that <code>time</code> is not an Integer anymore but a JSON number, to allow sub-millisecond values.</li>\n<li>no more <code>shutoffValues</code> and <code>shutoffPhase</code><br>\n<code>shutoffValues</code> can be expressed as specialValues with a meaningful <code>name</code>, <code>shutoffPhase</code> is the measurement with the latest timestamp <code>ts</code>.</li>\n<li>a common definition.json schema is used for sections that are used in multiple telegrams. With the help of JSON schema 'anyOf', sections inherit and can extend from these base definitions.</li>\n</ul>\n<h1>Next steps</h1>\n<p>The most recent updates and this post should finalize the v3 schema. Vetos with suggestions that find a consensus fairly soon after posting are stil accepted <a href=\"https://github.com/eclipse/unide/issues\">via github issues</a>. Major changes and suggestions should rather be addressed to a v4.</p>\n<p>The bindings and server should be updated to accept and validate v3 as well. After updating further dependencies, creating eclipse CQs and undergoing the release process, everything should be wrapped up in the unide release 0.3.0.</p>\n",url:"/blog/2019/3/1/Version-3",title:"Protocol Version 3 release candidate",date:new Date(15513984e5),tags:["v3"],prev:{url:"/blog/2018/9/4/Template-for-PPMP-transformation",title:"Use Cases: Template for transformation"},next:{url:"/blog/2019/11/26/Version-3-final",title:"Protocol v3 final"}}}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/2918aa6661dd624eef70.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2019/3/1/index.html b/blog/2019/3/1/index.html
index 4f06a1c..3b1499b 100644
--- a/blog/2019/3/1/index.html
+++ b/blog/2019/3/1/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - April 01, 2019</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - April 01, 2019</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -17,21 +17,21 @@
     </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="blog column is-8"><h1 class="title is-3">
     April 01, 2019
   </h1> <ul><li><h2 class="title is-4"><a href="/unide/blog/2019/3/1/Version-3">
-          PPMP Version 3 release candidate
+          Protocol Version 3 release candidate
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2019/3/1/Version-3"><i class="fa fa-calendar"></i>  
           01
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2019/3/1/Version-3",title:"PPMP Version 3 release candidate",date:new Date(15513984e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2019/3/1/Version-3",title:"Protocol Version 3 release candidate",date:new Date(15513984e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2019/3/index.html b/blog/2019/3/index.html
index 934f996..c769805 100644
--- a/blog/2019/3/index.html
+++ b/blog/2019/3/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - April 2019</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - April 2019</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -17,21 +17,21 @@
     </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="blog column is-8"><h1 class="title is-3">
     April 2019
   </h1> <ul><li><h2 class="title is-4"><a href="/unide/blog/2019/3/1/Version-3">
-          PPMP Version 3 release candidate
+          Protocol Version 3 release candidate
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2019/3/1/Version-3"><i class="fa fa-calendar"></i>  
           01
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -74,6 +74,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2019/3/1/Version-3",title:"PPMP Version 3 release candidate",date:new Date(15513984e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2019/3/1/Version-3",title:"Protocol Version 3 release candidate",date:new Date(15513984e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2019/index.html b/blog/2019/index.html
index 34073e8..9692503 100644
--- a/blog/2019/index.html
+++ b/blog/2019/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - 2019</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - 2019</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -17,25 +17,25 @@
     </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="blog column is-8"><h1 class="title is-3">
     2019
   </h1> <ul><li><h2 class="title is-4"><a href="/unide/blog/2019/11/26/Version-3-final">
-          PPMP Version 3 final
+          Protocol v3 final
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2019/11/26/Version-3-final"><i class="fa fa-calendar"></i>  
           November 26
         </a></h3></li><li><h2 class="title is-4"><a href="/unide/blog/2019/3/1/Version-3">
-          PPMP Version 3 release candidate
+          Protocol Version 3 release candidate
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2019/3/1/Version-3"><i class="fa fa-calendar"></i>  
           March 01
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -78,6 +78,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2019/11/26/Version-3-final",title:"PPMP Version 3 final",date:new Date(15747264e5)},{url:"/blog/2019/3/1/Version-3",title:"PPMP Version 3 release candidate",date:new Date(15513984e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2019/11/26/Version-3-final",title:"Protocol v3 final",date:new Date(15747264e5)},{url:"/blog/2019/3/1/Version-3",title:"Protocol Version 3 release candidate",date:new Date(15513984e5)}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/blog/index.html b/blog/index.html
index 6d0c6fe..cdcabac 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Recent Posts</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
+    <title data-n-head="true">Eclipse unide - Recent Posts</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/633c75f24cbc4500f5f7.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -17,15 +17,15 @@
     </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="blog column is-8"><h1 class="title is-3">
     Recent Posts
   </h1> <ul><li><h2 class="title is-4"><a href="/unide/blog/2019/11/26/Version-3-final">
-          PPMP Version 3 final
+          Protocol v3 final
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2019/11/26/Version-3-final"><i class="fa fa-calendar"></i>  
           November 26, 2019
         </a></h3></li><li><h2 class="title is-4"><a href="/unide/blog/2019/3/1/Version-3">
-          PPMP Version 3 release candidate
+          Protocol Version 3 release candidate
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2019/3/1/Version-3"><i class="fa fa-calendar"></i>  
           March 01, 2019
         </a></h3></li><li><h2 class="title is-4"><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-          PPMP Use Cases: Template for PPMP transformation
+          Use Cases: Template for transformation
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation"><i class="fa fa-calendar"></i>  
           September 04, 2018
         </a></h3></li><li><h2 class="title is-4"><a href="/unide/blog/2018/3/26/Release-0.2.0">
@@ -33,21 +33,21 @@
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2018/3/26/Release-0.2.0"><i class="fa fa-calendar"></i>  
           March 26, 2018, 12:39
         </a></h3></li><li><h2 class="title is-4"><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-          PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+          Use Cases: Unide and the Eclipse Testbed
         </a></h2> <h3 class="subtitle is-6"><a href="/unide/blog/2018/2/13/grinding-machine-scenario"><i class="fa fa-calendar"></i>  
           February 13, 2018
         </a></h3></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -90,6 +90,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2019/11/26/Version-3-final",title:"PPMP Version 3 final",date:"2019-11-26T00:00:00.000Z"},{url:"/blog/2019/3/1/Version-3",title:"PPMP Version 3 release candidate",date:"2019-03-01T00:00:00.000Z"},{url:"/blog/2018/9/4/Template-for-PPMP-transformation",title:"PPMP Use Cases: Template for PPMP transformation",date:"2018-09-04T00:00:00.000Z"},{url:"/blog/2018/3/26/Release-0.2.0",title:"Unide 0.2.0 released",date:"2018-03-26T10:39:00.000Z"},{url:"/blog/2018/2/13/grinding-machine-scenario",title:"PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed",date:"2018-02-13T00:00:00.000Z"}]}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/1cf0d23982851c579fa1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{list:[{url:"/blog/2019/11/26/Version-3-final",title:"Protocol v3 final",date:"2019-11-26T00:00:00.000Z"},{url:"/blog/2019/3/1/Version-3",title:"Protocol Version 3 release candidate",date:"2019-03-01T00:00:00.000Z"},{url:"/blog/2018/9/4/Template-for-PPMP-transformation",title:"Use Cases: Template for transformation",date:"2018-09-04T00:00:00.000Z"},{url:"/blog/2018/3/26/Release-0.2.0",title:"Unide 0.2.0 released",date:"2018-03-26T10:39:00.000Z"},{url:"/blog/2018/2/13/grinding-machine-scenario",title:"Use Cases: Unide and the Eclipse Testbed",date:"2018-02-13T00:00:00.000Z"}]}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/273ad16c0a5d62586f48.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/faq/index.html b/faq/index.html
index 541f667..2d5aa2b 100644
--- a/faq/index.html
+++ b/faq/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Frequently asked questions</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/d0fdea7b1fe36ac7586f.css">
+    <title data-n-head="true">Eclipse unide - Frequently asked questions</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/d0fdea7b1fe36ac7586f.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -20,30 +20,30 @@
     We assembled a few frequently asked questions about the Production Performance Protocol (PPMP) and the Unide project. You're welcome to raise your questions in the <a href="https://www.eclipse.org/forums/index.php/f/348/">Unide forum</a>.
   </div> <div class="accordion"><div class="card collapsibleCard collapsed"><header class="card-header"><p class="card-header-title">
         What does "Unide" stand for?
-      </p> <a class="card-header-icon"><span class="icon"><i class="fa fa-angle-up"></i></span></a></header> <div style="display:none"><div class="card-content"> <div>The projects name is derived from understand industry devices. Other ideas like connect industry machines turned out to have meanings in foreign languages or being trademarked already.<br>Regarding the logo: Unide and PPMP's goal is to enable you to connect machines and receive their measurements / alerts. The logo represents that. It has you ('<i>U</i>') highlighted and connects to rings. As a side note, we found that the words almost look like <i>you-nice</i>.</div></div></div></div><div class="card collapsibleCard collapsed"><header class="card-header"><p class="card-header-title">
-        What's the difference between Unide and PPMP?
-      </p> <a class="card-header-icon"><span class="icon"><i class="fa fa-angle-up"></i></span></a></header> <div style="display:none"><div class="card-content"> <div>The Production Performance Mangement Protocol (PPMP) is the name of the structure of the <a href="specification/">payload</a> whereas Unide is the project that aims to provide sample implementations and further development of this protocol in and with the Eclipse Open Source community. Nevertheless, PPMP is an open suggestion, and everyone is welcome to using it, even without contributing to the Unide project.</div></div></div></div><div class="card collapsibleCard collapsed"><header class="card-header"><p class="card-header-title">
+      </p> <a class="card-header-icon"><span class="icon"><i class="fa fa-angle-up"></i></span></a></header> <div style="display:none"><div class="card-content"> <div>The projects name is derived from understand industry devices. Other ideas like connect industry machines turned out to have meanings in foreign languages or being trademarked already.<br>Regarding the logo: Unide and Production Performance Management Protocol's goal is to enable you to connect machines and receive their measurements / alerts. The logo represents that. It has you ('<i>U</i>') highlighted and connects to rings. As a side note, we found that the words almost look like <i>you-nice</i>.</div></div></div></div><div class="card collapsibleCard collapsed"><header class="card-header"><p class="card-header-title">
+        What's the difference between Unide and the Production Performance Management Protocol?
+      </p> <a class="card-header-icon"><span class="icon"><i class="fa fa-angle-up"></i></span></a></header> <div style="display:none"><div class="card-content"> <div>The Production Performance Mangement Protocol (PPMP) is the name of the structure of the <a href="specification/">payload</a> whereas Unide is the project that aims to provide sample implementations and further development of this protocol in and with the Eclipse Open Source community. Nevertheless, the Production Performance Management Protocol is an open suggestion, and everyone is welcome to using it, even without contributing to the Unide project.</div></div></div></div><div class="card collapsibleCard collapsed"><header class="card-header"><p class="card-header-title">
         Why introducing another industry protocol?
-      </p> <a class="card-header-icon"><span class="icon"><i class="fa fa-angle-up"></i></span></a></header> <div style="display:none"><div class="card-content"> <div>There are already plenty of transport protocols (REST, AMQP, etc.) available. PPMP aims to provide the very industry specific semantic structure for their payload. So it aims to complete such IoT transport infrastructure and bridge the gap to the manufacturing domain. OPC-DA/UA on the other hand covers full service oriented architecture, security concerns and information model, which makes it more complex and costly to implement and operate. In some use cases, this is not necessary.</div></div></div></div><div class="card collapsibleCard collapsed"><header class="card-header"><p class="card-header-title">
+      </p> <a class="card-header-icon"><span class="icon"><i class="fa fa-angle-up"></i></span></a></header> <div style="display:none"><div class="card-content"> <div>There are already plenty of transport protocols (REST, AMQP, etc.) available. The Production Performance Management Protocol aims to provide the very industry specific semantic structure for their payload. So it aims to complete such IoT transport infrastructure and bridge the gap to the manufacturing domain. OPC-DA/UA on the other hand covers full service oriented architecture, security concerns and information model, which makes it more complex and costly to implement and operate. In some use cases, this is not necessary.</div></div></div></div><div class="card collapsibleCard collapsed"><header class="card-header"><p class="card-header-title">
         Why have you choosen JSON as syntax?
       </p> <a class="card-header-icon"><span class="icon"><i class="fa fa-angle-up"></i></span></a></header> <div style="display:none"><div class="card-content"> <div>JSON is a good fit regarding understandability and size. Having a structured and comprehensible basis is the first step for acceptance in the industry. In the spirit of Donald E. Knuth ("<a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.103.6084"><i>premature optimization is the root of all evil</i></a>"), further compacting is possible in a later stage.</div></div></div></div><div class="card collapsibleCard collapsed"><header class="card-header"><p class="card-header-title">
         Why are time and measurement points separated in multiple arrays?
       </p> <a class="card-header-icon"><span class="icon"><i class="fa fa-angle-up"></i></span></a></header> <div style="display:none"><div class="card-content"> <div>We have discussed multiple options for <a href="specification">series</a>: having an array of<br>tupels (<code>[[0, 23.34],[...],...]</code>),<br>plain objects (<code>[{time: 0, temperature: 23.34}, {...}...]</code>),<br>objects with time as key (<code>{ "0": [23.34,...],...}</code>) and other.<br>When parsing, we had to recognize, that unsigned long int for time and floating point measurements are of different types. Also, all former variants are more verbose due to additional brackets, commas or quotation marks. We believe that the current version is a good compromise between readability and structure.</div></div></div></div><div class="card collapsibleCard collapsed"><header class="card-header"><p class="card-header-title">
-        I'm interested in Unide/PPMP. How can I contribute?
-      </p> <a class="card-header-icon"><span class="icon"><i class="fa fa-angle-up"></i></span></a></header> <div style="display:none"><div class="card-content"> <div>The first goal of Unide is to provide sample client/server implementations of PPMP. Secondly, we're looking forward to improving PPMP in future versions together with the eclipse community.<br>If you want to contribute with source code, use cases or implementing it in your devices, let us know and discuss in the <a href="https://github.com/eclipse/unide">unide forum</a> or by forking / filing an issue on <a href="https://github.com/eclipse/unide">github</a>.</div></div></div></div><div class="card collapsibleCard collapsed"><header class="card-header"><p class="card-header-title">
+        I'm interested in Unide/Production Performance Management Protocol. How can I contribute?
+      </p> <a class="card-header-icon"><span class="icon"><i class="fa fa-angle-up"></i></span></a></header> <div style="display:none"><div class="card-content"> <div>The first goal of Unide is to provide sample client/server implementations of the Production Performance Management Protocol. Secondly, we're looking forward to improving the Production Performance Management Protocol in future versions together with the eclipse community.<br>If you want to contribute with source code, use cases or implementing it in your devices, let us know and discuss in the <a href="https://github.com/eclipse/unide">unide forum</a> or by forking / filing an issue on <a href="https://github.com/eclipse/unide">github</a>.</div></div></div></div><div class="card collapsibleCard collapsed"><header class="card-header"><p class="card-header-title">
         Why have you included content-spec uri, if that can also be expressed in the a REST url already?
-      </p> <a class="card-header-icon"><span class="icon"><i class="fa fa-angle-up"></i></span></a></header> <div style="display:none"><div class="card-content"> <div><a href="specification">content-spec</a> is included in the payload, because PPMP does not rely on a specific transport protocol (like REST).</div></div></div></div></div></div> <div class="sidebar column is-3 is-offset-1"><div class="recentPosts"><h4 class="subtitle is-5">
+      </p> <a class="card-header-icon"><span class="icon"><i class="fa fa-angle-up"></i></span></a></header> <div style="display:none"><div class="card-content"> <div><a href="specification">content-spec</a> is included in the payload, because the Production Performance Management Protocol does not rely on a specific transport protocol (like REST).</div></div></div></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -86,6 +86,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/7e5b30c8046b1e015c6b.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/5559b707095db7adf400.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/files/08afffd6ed19d05d9d58.js b/files/08afffd6ed19d05d9d58.js
new file mode 100644
index 0000000..1ff7f9e
--- /dev/null
+++ b/files/08afffd6ed19d05d9d58.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{147:function(e,t,n){"use strict";function o(e){for(var t=arguments,i=1;i<arguments.length;i++)for(var p in arguments[i])e[p]=t[i][p];return e}var r={functional:!0,props:{code:{type:String},inline:{type:Boolean,default:!1},language:{type:String,default:"markup"}},render:function(e,t){var code=t.props.code||(t.children&&t.children.length>0?t.children[0].text:""),n=t.props.inline,r=t.props.language,c=Prism.languages[r],l="language-"+r;return n?e("code",o({},t.data,{class:[t.data.class,l],domProps:o({},t.data.domProps,{innerHTML:Prism.highlight(code,c)})})):e("pre",o({},t.data,{class:[t.data.class,l]}),[e("code",{class:l,domProps:{innerHTML:Prism.highlight(code,c)}})])}};e.exports=r},174:function(e,t,n){},251:function(e,t,n){"use strict";var o=n(174);n.n(o).a},362:function(e,t,n){"use strict";n.r(t);var o=n(147),r={head:function(){return{title:"Specification"}},asyncData:function(e){return{isStatic:e.isStatic}},components:{prism:n.n(o).a}},c=(n(251),n(2)),component=Object(c.a)(r,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"specification"},[n("div",{staticClass:"content"},[e._m(0),e._v(" "),n("h2",[e._v("Rationale")]),e._v(" "),n("p",[e._v("\n      Noticeably in recent years, there is a continuous increase in demand, price pressure and complexity in manufacturing. Things need to move faster, be more flexible, and fulfill higher quality standards forcing manufacturers to optimize their processes.\n      ")]),e._v(" "),n("p",[e._v("\n      Production facilities and their performance have a huge impact on the overall performance of manufacturing processes. However, to identify bottlenecks and possibilities for improvements detailed data from machines are required.\n      ")]),e._v(" "),n("p",[e._v("\n      Such data is surely provided by machines either via modern protocols such as OPC UA or via proprietary access methods but it is not provided in a common and easily accessible format, which can be used to do performance analysis and optimization. This renders holistic process improvement efforts infeasible for many, especially smaller organizations.\n      ")]),e._v(" "),n("p",[e._v("\n      The Production Performance Management Protocol (PPMP) specifies a format that allows to capture data that is required to do performance analysis of production facilities. It allows monitoring backends to collect and evaluate key metrics of machines in the context of a production process. It is doing that by allowing to relate the machine status with currently produced parts.\n      ")]),e._v(" "),n("p",[e._v("\n      The specification is structured into three payload formats: Measurement payload, message payload and process payload. The Measurement payload contains measurements from machines such as the temperature of a machine at a specific point in time together with the currently produced part. The message payload contains arbitrary messages sent by a machine, e.g. alerts or the like. A process message consists of information about a discrete e.g. tightening or welding process with all their characterizing data, which are needed to describe and analyze it.\n      ")]),e._v(" "),n("p",[e._v("\n      The default way of transporting the json payload is via http to allow for an easy integration into various backend systems. Other transportation methods are possible and welcome.\n      ")]),e._v(" "),n("h2",[e._v("Validation")]),e._v(" "),n("p",[e._v("\n        Did you know that you can easily validate your Production Performance Management Protocol payload against the published online version of the Production Performance Management Protocol? For exapmle, "),n("a",{attrs:{href:"https://www.jsonschemavalidator.net"}},[e._v("jsonschemavalidator.net")]),e._v(" provides an online validation frontend. Just use your payload as JSON input and the respective github link to the Production Performance Management Protocol specification as a "),n("code",[e._v("$ref")]),e._v(" in the schema. For example:\n        "),n("prism",{attrs:{language:"json"}},[e._v('{\n  "$ref": "https://raw.githubusercontent.com/eclipse/unide/master/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json"\n}')])],1)]),e._v(" "),n("div",{staticClass:"columns",attrs:{id:"messageDetail"}},[n("div",{staticClass:"column"},[n("nuxt-link",{attrs:{to:"/specification"+(e.isStatic?"#messageDetail":""),exact:""}},[e._v("\n          Overview\n        ")])],1),e._v(" "),n("div",{staticClass:"column"},[n("nuxt-link",{class:{"nuxt-link-active":e.$route.path.endsWith("machine-message")},attrs:{to:"/specification/machine-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          Machine Message\n        ")]),e._v("\n        (v\n        "),n("nuxt-link",{attrs:{to:"/specification/v2/machine-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          2\n        ")]),e._v("\n        /\n        "),n("nuxt-link",{attrs:{to:"/specification/v3/machine-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          3\n         ")]),e._v("\n        )\n      ")],1),e._v(" "),n("div",{staticClass:"column"},[n("nuxt-link",{class:{"nuxt-link-active":e.$route.path.endsWith("measurement-message")},attrs:{to:"/specification/measurement-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          Measurement Message\n        ")]),e._v("\n        (v\n        "),n("nuxt-link",{attrs:{to:"/specification/v2/measurement-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          2\n        ")]),e._v("\n        /\n        "),n("nuxt-link",{attrs:{to:"/specification/v3/measurement-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          3\n        ")]),e._v("\n        )\n      ")],1),e._v(" "),n("div",{staticClass:"column"},[n("nuxt-link",{class:{"nuxt-link-active":e.$route.path.endsWith("process-message")},attrs:{to:"/specification/process-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          Process Message\n        ")]),e._v("\n        (v\n        "),n("nuxt-link",{attrs:{to:"/specification/v2/process-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          2\n        ")]),e._v("\n        /\n        "),n("nuxt-link",{attrs:{to:"/specification/v3/process-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          3\n        ")]),e._v("\n        )\n      ")],1)]),e._v(" "),n("nuxt-child")],1)},[function(){var e=this.$createElement,t=this._self._c||e;return t("h1",[t("a",{attrs:{id:"PPMP-Specification",title:"Production Performance Management Protocol Specification"}}),this._v("\n        Production Performance Management Protocol Specification\n      ")])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
diff --git a/files/0965add99e93e40b8e8f.js b/files/0965add99e93e40b8e8f.js
new file mode 100644
index 0000000..52344c3
--- /dev/null
+++ b/files/0965add99e93e40b8e8f.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{361:function(e,t,n){"use strict";n.r(t);var r={layout:"sidebar"},o=n(2),component=Object(o.a)(r,function(){this.$createElement;this._self._c;return this._m(0)},[function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"proposal content"},[n("h1",[e._v("\n  What is Unide?\n  ")]),e._v(" "),n("p",[e._v("Noticeably in the recent years, there’s a continuous increase in demand, price pressure and complexity in manufacturing. Things need to move faster, be more flexible, and fulfill higher quality standards. Often, optimization in this regard is referred to as Production Performance Management (PPM). The basis for this optimization is information from the machines and devices related to a product, such as:")]),e._v(" "),n("ul",[n("li",[e._v("Torque and angle for a tightening process")]),e._v(" "),n("li",[e._v("Influx / efflux of throttle plate test station")]),e._v(" "),n("li",[e._v("Energy consumption of spindles in a cutting process")])]),e._v(" "),n("p",[e._v("Nowadays, brand new machines and software are often shipped with powerful communication capabilities. For older machines, smaller factories and SMEs (Small and Medium Enterprises), it can be a challenge to catch up with the complex IT standards that come along. In fact, sometimes the hardware itself imposes limits.")]),e._v(" "),n("p",[e._v("Nevertheless, in a manufacturing environment, monitoring makes most sense if there are no blind spots. To achieve that, upgrading machines and software is one option, retrofitting another. For the latter, the hurdle should be as low as possible. Yet, there should be a few guidelines for a one-way exchange of the most necessary information (machine messages, measurements):")]),e._v(" "),n("p",[e._v("The structure of the data shall be:")]),e._v(" "),n("ul",[n("li",[e._v("flexible enough to be carried via multiple protocols,"),n("br"),e._v("in order to not reinvent the wheel and leverage on existing technology")]),e._v(" "),n("li",[e._v("similar in each case,"),n("br"),e._v("to be able to use the same software to interpret the data")]),e._v(" "),n("li",[e._v("easily understandable,"),n("br"),e._v("so that implementation in a custom environment won’t be a hurdle")]),e._v(" "),n("li",[e._v("as simple as possible,"),n("br"),e._v("to not produce an opinionated framework")]),e._v(" "),n("li",[e._v("and yet containing enough information for the use cases,"),n("br"),e._v("to fulfill the functional requirements")])]),e._v(" "),n("p",[e._v("We decided the least common denominator of necessary information are the mandatory fields, common relevant information to be optional, and the possibility for further extension points through metadata.")]),e._v(" "),n("h2",[e._v("\n    Industry benefits of Unide\n  ")]),e._v(" "),n("p",[e._v("This open source project aims to make PPM affordable for smaller organizations by reducing cost and complexity of data communication. Through sample implementations of a simple information structure (Production Performance Management Protocol - PPMP) tailored to manufacturing environments, we want to encourage the community to use, share, and evolve this structure together.")]),e._v(" "),n("p",[e._v("The Production Performance Management Protocol has already been introduced as part of a PPM testbed at a medium-sized Bosch plant, working with many SMEs as partners and suppliers. Furthermore, this testbed aims to create an ecosystem which allows SMEs and larger companies to collaborate efficiently.")]),e._v(" "),n("p",[e._v("The Production Performance Management Protocol takes an important role by ensuring interoperability between different types of devices and software. It is designed to gather and aggregate machine and sensor data from different devices. It focuses on defining the JSON payload which can be transferred via a variety of transports (REST, AMQP, MQTT). The primary goals of the Production Performance Management Protocol are:")]),e._v(" "),n("ol",[n("li",[e._v("Integrating devices (across domains; e.g. manufacturing or energy) for data aggregation and gathering purposes")]),e._v(" "),n("li",[e._v("Providing a very lightweight and easy-to-use solution for small and medium-sized enterprises (SMEs)")])]),e._v(" "),n("h1",[e._v("\n    Scope\n  ")]),e._v(" "),n("p",[e._v("The Eclipse Unide project publishes the current version of Production Performance Management Protocol (PPMP) and develops simple server/client implementations. The implementations store the payloads in a database and displays them through a simple user interface. Everyone can then use these samples for their custom condition monitoring applications.")]),e._v(" "),n("p",[e._v("The project will contain:")]),e._v(" "),n("p",[n("em",[e._v("Production Performance Management Protocol Specification:")])]),e._v(" "),n("ul",[n("li",[e._v("Machine message and measurement interfaces")]),e._v(" "),n("li",[e._v("JSON based")]),e._v(" "),n("li",[e._v("Versioned")])]),e._v(" "),n("p",[n("em",[e._v("Client:")])]),e._v(" "),n("ul",[n("li",[e._v("Chrome / nw.js App")]),e._v(" "),n("li",[e._v("For Industry Machines and Devices")]),e._v(" "),n("li",[e._v("Node.js/Python client running on Raspberry Pi")])]),e._v(" "),n("p",[n("em",[e._v("Server:")])]),e._v(" "),n("ul",[n("li",[e._v("(REST) Server including persistence and simple data visualization")]),e._v(" "),n("li",[e._v("Multiple examples for different technologies")])]),e._v(" "),n("h1",[e._v("\n    Description\n  ")]),e._v(" "),n("p",[e._v("Eclipse Unide provides a lightweight Production Performance Management Protocol (PPMP) server-client implementations (using JSON, REST and other). The core of the protocol are two interface definitions:")]),e._v(" "),n("ul",[n("li",[e._v("Production Performance Management Protocol Measurement Interface: This is a public REST API with the purpose of receiving time series and machine data.")]),e._v(" "),n("li",[e._v("Production Performance Management Protocol Messages Interface: This is a public REST API with the purpose of receiving machine messages.")])]),e._v(" "),n("h1",[e._v("\n   Why Here?\n  ")]),e._v(" "),n("p",[e._v("The Production Performance Management Protocol extends the existing Eclipse IoT world by providing an easy and lightweight format for gathering data from industry sensors and machines, focusing on normalizing time series and alert messages. It can be transported by protocols like REST, AMQP, MQTT. As the Production Performance Management Protocol, these technologies do also not require complex and expensive middleware nor do their systems cause additional license fees. Eclipse is an excellent platform for developing Production Performance Management Protocol sample implementations and evolving the format hands-on with the community. In fact, it could even join forces with existing Eclipse IoT projects like "),n("a",{attrs:{href:"https://projects.eclipse.org/projects/iot.hono",target:"_blank",rel:"external"}},[e._v("Hono")]),e._v(", "),n("a",{attrs:{href:"https://www.eclipse.org/paho/",target:"_blank",rel:"external"}},[e._v("Paho")]),e._v(" or "),n("a",{attrs:{href:"https://www.eclipse.org/kura/",target:"_blank",rel:"external"}},[e._v("Kura")]),e._v(".")]),e._v(" "),n("h1",[e._v("Interested Parties")]),e._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"https://www.contact-software.com",target:"_blank",rel:"external"}},[e._v("CONTACT Software GmbH")])]),e._v(" "),n("li",[n("a",{attrs:{href:"http://www.balluff.com/",target:"_blank",rel:"external"}},[e._v("Balluff GmbH")])]),e._v(" "),n("li",[n("a",{attrs:{href:"http://sap.com/",target:"_blank",rel:"external"}},[e._v("SAP")]),e._v(", Industry Standards & Open Source")]),e._v(" "),n("li",[n("a",{attrs:{href:"http://www.tcs.com/",target:"_blank",rel:"external"}},[e._v("Tata Consultancy Services")]),e._v(", Internet of Things Group")]),e._v(" "),n("li",[n("a",{attrs:{href:"http://www.3ds.com/",target:"_blank",rel:"external"}},[e._v("Dassault Systèmes")])]),e._v(" "),n("li",[n("a",{attrs:{href:"http://www.cadis-engineering.de/",target:"_blank",rel:"external"}},[e._v("CADIS Service GmbH")])]),e._v(" "),n("li",[n("a",{attrs:{href:"http://www.egt.de/",target:"_blank",rel:"external"}},[e._v("EGT AG")])]),e._v(" "),n("li",[n("a",{attrs:{href:"http://www.klw.com/",target:"_blank",rel:"external"}},[e._v("KLW Karl Lutz GmbH")])]),e._v(" "),n("li",[n("a",{attrs:{href:"http://www.rampf-gruppe.de/",target:"_blank",rel:"external"}},[e._v("RAMPF Machine Systems GmbH & Co. KG")])]),e._v(" "),n("li",[n("a",{attrs:{href:"http://www.schmalz.com/",target:"_blank",rel:"external"}},[e._v("J. Schmalz GmbH")])]),e._v(" "),n("li",[n("a",{attrs:{href:"https://www.bosch-si.com/",target:"_blank",rel:"external"}},[e._v("Bosch Software Innovations GmbH")])])])])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
diff --git a/files/502370205f0b3be987af.js b/files/09e057656ddeb65b6a85.js
similarity index 98%
rename from files/502370205f0b3be987af.js
rename to files/09e057656ddeb65b6a85.js
index 902f9f9..b3cb61a 100644
--- a/files/502370205f0b3be987af.js
+++ b/files/09e057656ddeb65b6a85.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{361:function(e,r,t){"use strict";t.r(r);var o=t(153),n=(t(61),t(11)),c=(t(21),t(150),t(147)),m=t.n(c),l=t(149),f=t(155),d=t.n(f),h=t(159),v={head:function(){return{title:"Specification for process messages"}},created:function(){var e=this,r=new Date,t="a4927dad-58d4-4580-b460-79cefd56775b";this.$static={message:{"content-spec":"urn:spec://eclipse.org/unide/process-message#v2",device:{deviceID:t},process:{ts:r.toISOString()},measurements:[{ts:new Date(r.valueOf()+100).toISOString(),series:{force:[26,23,24],pressure:[52.4,46.32,44.2432]}}]},complexMessage:{"content-spec":"urn:spec://eclipse.org/unide/process-message#v2",device:{deviceID:t,operationalStatus:"normal",metaData:{swVersion:"2.0.3.13",swBuildId:"41535"}},part:{type:"SINGLE",partTypeID:"F00VH07328",partID:"420003844",result:"NOK",code:"HUH289",metaData:{toolId:"32324-432143"}},process:{externalProcessId:"b4927dad-58d4-4580-b460-79cefd56775b",ts:r.toISOString(),result:"NOK",shutoffPhase:"phase 2",program:{id:"1",name:"Programm 1",lastChangedDate:"2002-05-30T09:30:10.123+02:00"},shutoffValues:{force:{ts:new Date(r.valueOf()+1e4).toISOString(),value:24,upperError:26,lowerError:22,upperWarn:25,lowerWarn:23,target:24},pressure:{value:50,upperError:52,lowerError:48}},metaData:{maxDuration:"30min",escalation:"shift leader"}},measurements:[{ts:new Date(r.valueOf()+100).toISOString(),phase:"phase 1",name:"heating up",result:"OK",code:"0000 EE01",limits:{pressure:{upperError:4444,lowerError:44,upperWarn:2222,lowerWarn:46,target:35},force:{upperError:[27,24,25],lowerError:[25,22,23]}},specialValues:[{$_time:12,name:"turning point",value:{pressure:24,force:50}}],series:{time:[30,36,42],force:[26,23,24],pressure:[52.4,46.32,44.2432],temperature:[45.4243,46.42342,44.2432]}},{ts:new Date(r.valueOf()+430).toISOString(),phase:"phase 2",name:"processing",result:"OK",series:{$_time:[0,23,24],temperature:[49.2,48.8,50]}}]}},this.$static.examples=Object.entries(Object(n.a)({},["content-spec","device","device.deviceID","device.metaData","device.operationalStatus","measurements","measurements[0].code","measurements[0].limits","measurements[0].name","measurements[0].phase","measurements[0].result","measurements[0].series","measurements[0].series.$_time","measurements[0].specialValues","measurements[0].specialValues[0].$_time","measurements[0].specialValues[0].name","measurements[0].specialValues[0].value","measurements[0].ts","part","part.code","part.metaData","part.partID","part.partTypeID","part.result","part.type","process","process.externalProcessId","process.metaData","process.program","process.program.id","process.program.lastChangedDate","process.program.name","process.result","process.shutoffPhase","process.shutoffValues","process.ts"].reduce(function(e,r){return e[r.replace(/(^|\.)/g,"$1properties.").replace(/\[[^]]*]/g,".items")]=r,e},{'properties.measurements.items.properties.limits.patternProperties["^[^$]+"].oneOf[0]':"measurements[0].limits.pressure",'properties.measurements.items.properties.limits.patternProperties["^[^$]+"].oneOf[1]':"measurements[0].limits.force",'properties.measurements.items.properties.series.patternProperties["^[^$]+"]':"measurements[0].series.force",'properties.process.properties.shutoffValues.patternProperties["^[^$]+"]':"process.shutoffValues.force"}),["lowerError","lowerWarn","target","upperError","upperWarn"].reduce(function(e,r){return e['properties.measurements.items.properties.limits.patternProperties["^[^$]+"].oneOf[0].properties.'.concat(r)]="measurements[0].limits.pressure.".concat(r),e['properties.measurements.items.properties.limits.patternProperties["^[^$]+"].oneOf[1].properties.'.concat(r)]="measurements[0].limits.force.".concat(r),e['properties.process.properties.shutoffValues.patternProperties["^[^$]+"].properties.'.concat(r)]="process.shutoffValues.force.".concat(r),e},{}))).reduce(function(r,t){var n=Object(o.a)(t,2),c=n[0],path=n[1],m=d()(e.$static.message,path)||d()(e.$static.complexMessage,path);return m&&(r[c]=[m]),r},{})},filters:{stringify:function(e){return JSON.stringify(e," ",2)}},components:{card:l.a,prism:m.a,schemaDetail:h.a}},_=t(2),component=Object(_.a)(v,function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("div",{staticClass:"process-message content"},[e._m(0),e._v(" "),t("p",[e._v("The process message is the format to exchange data out of discrete processes. It also allows to transport process information, part information and measurement data for each phase of the process.")]),e._v(" "),t("img",{staticClass:"is-center",attrs:{src:"images/specification/v2/processPayload.svg",alt:"Class diagram of the process data payload",title:"Class diagram of the process data payload"}}),e._v(" "),t("schemaDetail",{attrs:{type:"v2/process",examples:e.$static.examples}},[t("card",{attrs:{collapsed:!0}},[t("template",{slot:"header"},[e._v("\n        Minimal message example\n      ")]),e._v(" "),t("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.message)))])],2),e._v(" "),t("card",{attrs:{collapsed:!0}},[t("template",{slot:"header"},[e._v("\n        Process message example\n      ")]),e._v(" "),t("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.complexMessage)))])],2)],1)],1)},[function(){var e=this.$createElement,r=this._self._c||e;return r("h1",[r("a",{attrs:{id:"Process-Payload",title:"Process Payload"}}),this._v("\n    Process Payload\n  ")])}],!1,null,null,null);r.default=component.exports}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{365:function(e,r,t){"use strict";t.r(r);var o=t(153),n=(t(61),t(11)),c=(t(21),t(150),t(147)),m=t.n(c),l=t(149),f=t(155),d=t.n(f),h=t(159),v={head:function(){return{title:"Specification for process messages"}},created:function(){var e=this,r=new Date,t="a4927dad-58d4-4580-b460-79cefd56775b";this.$static={message:{"content-spec":"urn:spec://eclipse.org/unide/process-message#v2",device:{deviceID:t},process:{ts:r.toISOString()},measurements:[{ts:new Date(r.valueOf()+100).toISOString(),series:{force:[26,23,24],pressure:[52.4,46.32,44.2432]}}]},complexMessage:{"content-spec":"urn:spec://eclipse.org/unide/process-message#v2",device:{deviceID:t,operationalStatus:"normal",metaData:{swVersion:"2.0.3.13",swBuildId:"41535"}},part:{type:"SINGLE",partTypeID:"F00VH07328",partID:"420003844",result:"NOK",code:"HUH289",metaData:{toolId:"32324-432143"}},process:{externalProcessId:"b4927dad-58d4-4580-b460-79cefd56775b",ts:r.toISOString(),result:"NOK",shutoffPhase:"phase 2",program:{id:"1",name:"Programm 1",lastChangedDate:"2002-05-30T09:30:10.123+02:00"},shutoffValues:{force:{ts:new Date(r.valueOf()+1e4).toISOString(),value:24,upperError:26,lowerError:22,upperWarn:25,lowerWarn:23,target:24},pressure:{value:50,upperError:52,lowerError:48}},metaData:{maxDuration:"30min",escalation:"shift leader"}},measurements:[{ts:new Date(r.valueOf()+100).toISOString(),phase:"phase 1",name:"heating up",result:"OK",code:"0000 EE01",limits:{pressure:{upperError:4444,lowerError:44,upperWarn:2222,lowerWarn:46,target:35},force:{upperError:[27,24,25],lowerError:[25,22,23]}},specialValues:[{$_time:12,name:"turning point",value:{pressure:24,force:50}}],series:{time:[30,36,42],force:[26,23,24],pressure:[52.4,46.32,44.2432],temperature:[45.4243,46.42342,44.2432]}},{ts:new Date(r.valueOf()+430).toISOString(),phase:"phase 2",name:"processing",result:"OK",series:{$_time:[0,23,24],temperature:[49.2,48.8,50]}}]}},this.$static.examples=Object.entries(Object(n.a)({},["content-spec","device","device.deviceID","device.metaData","device.operationalStatus","measurements","measurements[0].code","measurements[0].limits","measurements[0].name","measurements[0].phase","measurements[0].result","measurements[0].series","measurements[0].series.$_time","measurements[0].specialValues","measurements[0].specialValues[0].$_time","measurements[0].specialValues[0].name","measurements[0].specialValues[0].value","measurements[0].ts","part","part.code","part.metaData","part.partID","part.partTypeID","part.result","part.type","process","process.externalProcessId","process.metaData","process.program","process.program.id","process.program.lastChangedDate","process.program.name","process.result","process.shutoffPhase","process.shutoffValues","process.ts"].reduce(function(e,r){return e[r.replace(/(^|\.)/g,"$1properties.").replace(/\[[^]]*]/g,".items")]=r,e},{'properties.measurements.items.properties.limits.patternProperties["^[^$]+"].oneOf[0]':"measurements[0].limits.pressure",'properties.measurements.items.properties.limits.patternProperties["^[^$]+"].oneOf[1]':"measurements[0].limits.force",'properties.measurements.items.properties.series.patternProperties["^[^$]+"]':"measurements[0].series.force",'properties.process.properties.shutoffValues.patternProperties["^[^$]+"]':"process.shutoffValues.force"}),["lowerError","lowerWarn","target","upperError","upperWarn"].reduce(function(e,r){return e['properties.measurements.items.properties.limits.patternProperties["^[^$]+"].oneOf[0].properties.'.concat(r)]="measurements[0].limits.pressure.".concat(r),e['properties.measurements.items.properties.limits.patternProperties["^[^$]+"].oneOf[1].properties.'.concat(r)]="measurements[0].limits.force.".concat(r),e['properties.process.properties.shutoffValues.patternProperties["^[^$]+"].properties.'.concat(r)]="process.shutoffValues.force.".concat(r),e},{}))).reduce(function(r,t){var n=Object(o.a)(t,2),c=n[0],path=n[1],m=d()(e.$static.message,path)||d()(e.$static.complexMessage,path);return m&&(r[c]=[m]),r},{})},filters:{stringify:function(e){return JSON.stringify(e," ",2)}},components:{card:l.a,prism:m.a,schemaDetail:h.a}},_=t(2),component=Object(_.a)(v,function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("div",{staticClass:"process-message content"},[e._m(0),e._v(" "),t("p",[e._v("The process message is the format to exchange data out of discrete processes. It also allows to transport process information, part information and measurement data for each phase of the process.")]),e._v(" "),t("img",{staticClass:"is-center",attrs:{src:"images/specification/v2/processPayload.svg",alt:"Class diagram of the process data payload",title:"Class diagram of the process data payload"}}),e._v(" "),t("schemaDetail",{attrs:{type:"v2/process",examples:e.$static.examples}},[t("card",{attrs:{collapsed:!0}},[t("template",{slot:"header"},[e._v("\n        Minimal message example\n      ")]),e._v(" "),t("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.message)))])],2),e._v(" "),t("card",{attrs:{collapsed:!0}},[t("template",{slot:"header"},[e._v("\n        Process message example\n      ")]),e._v(" "),t("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.complexMessage)))])],2)],1)],1)},[function(){var e=this.$createElement,r=this._self._c||e;return r("h1",[r("a",{attrs:{id:"Process-Payload",title:"Process Payload"}}),this._v("\n    Process Payload\n  ")])}],!1,null,null,null);r.default=component.exports}}]);
\ No newline at end of file
diff --git a/files/1cf0d23982851c579fa1.js b/files/273ad16c0a5d62586f48.js
similarity index 97%
rename from files/1cf0d23982851c579fa1.js
rename to files/273ad16c0a5d62586f48.js
index ea60bab..dfa012e 100644
--- a/files/1cf0d23982851c579fa1.js
+++ b/files/273ad16c0a5d62586f48.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{171:function(t,e,n){},249:function(t,e,n){"use strict";var r=n(171);n.n(r).a},366:function(t,e,n){"use strict";n.r(e);n(45);var r=n(5),o=(n(62),n(198)),c=n.n(o),l=(navigator.languages&&navigator.languages[0]||navigator.language||navigator.userLanguage).toLowerCase().split(/[_-]+/)[0],d={layout:"sidebar",head:function(){return{title:this.dateHeader}},asyncData:function(){var t=Object(r.a)(regeneratorRuntime.mark(function t(e){var r,o,l,path,d;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.params,o=void 0===r?{}:r,e.query,l=e.payload,path="",d=null,o.year&&(path+="".concat(o.year),o.month&&(path+="/".concat(o.month),o.day&&(path+="/".concat(o.day)))),!path.length){t.next=12;break}if(t.t0=l,t.t0){t.next=9;break}return t.next=8,c.a.get("".concat("/","unide/files/posts/").concat(path,".json"));case 8:t.t0=t.sent.data;case 9:d=t.t0,t.next=16;break;case 12:return t.next=14,Promise.resolve().then(n.t.bind(null,90,3));case 14:d=(d=t.sent).default;case 16:return t.abrupt("return",{list:d.slice().reverse()});case 17:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}(),computed:{dateHeader:function(){var t=this.$route.params,e=t.year,n=t.month,r=t.day,o=new Date(Date.UTC(e||2016,n||0,r||1));return e?Intl.DateTimeFormat(l,{month:n?"long":void 0,year:e?"numeric":void 0,day:r?"2-digit":void 0}).format(o):"Recent Posts"}},filters:{timeStamp:function(t,e){var n=e.year,r=e.month,o=(e.day,(t=t instanceof Date?t:new Date(t)).getHours()&&t.getMinutes());return Intl.DateTimeFormat(l,{hour12:!1,month:r?void 0:"long",year:n?void 0:"numeric",day:"2-digit",hour:o?"numeric":void 0,minute:o?"2-digit":void 0}).format(t)}}},m=(n(249),n(2)),component=Object(m.a)(d,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"blog"},[n("h1",{staticClass:"title is-3"},[t._v("\n    "+t._s(t.dateHeader)+"\n  ")]),t._v(" "),n("ul",t._l(t.list.filter(function(i){return i.title}),function(e){return n("li",{key:e.url},[n("h2",{staticClass:"title is-4"},[n("nuxt-link",{attrs:{to:e.url}},[t._v("\n          "+t._s(e.title)+"\n        ")])],1),t._v(" "),e.date?n("h3",{staticClass:"subtitle is-6"},[n("nuxt-link",{attrs:{to:e.url}},[n("i",{staticClass:"fa fa-calendar"}),t._v("  \n          "+t._s(t._f("timeStamp")(e.date,t.$route.params))+"\n        ")])],1):t._e()])}),0)])},[],!1,null,null,null);e.default=component.exports}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{171:function(t,e,n){},249:function(t,e,n){"use strict";var r=n(171);n.n(r).a},359:function(t,e,n){"use strict";n.r(e);n(45);var r=n(5),o=(n(62),n(198)),c=n.n(o),l=(navigator.languages&&navigator.languages[0]||navigator.language||navigator.userLanguage).toLowerCase().split(/[_-]+/)[0],d={layout:"sidebar",head:function(){return{title:this.dateHeader}},asyncData:function(){var t=Object(r.a)(regeneratorRuntime.mark(function t(e){var r,o,l,path,d;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.params,o=void 0===r?{}:r,e.query,l=e.payload,path="",d=null,o.year&&(path+="".concat(o.year),o.month&&(path+="/".concat(o.month),o.day&&(path+="/".concat(o.day)))),!path.length){t.next=12;break}if(t.t0=l,t.t0){t.next=9;break}return t.next=8,c.a.get("".concat("/","unide/files/posts/").concat(path,".json"));case 8:t.t0=t.sent.data;case 9:d=t.t0,t.next=16;break;case 12:return t.next=14,Promise.resolve().then(n.t.bind(null,90,3));case 14:d=(d=t.sent).default;case 16:return t.abrupt("return",{list:d.slice().reverse()});case 17:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}(),computed:{dateHeader:function(){var t=this.$route.params,e=t.year,n=t.month,r=t.day,o=new Date(Date.UTC(e||2016,n||0,r||1));return e?Intl.DateTimeFormat(l,{month:n?"long":void 0,year:e?"numeric":void 0,day:r?"2-digit":void 0}).format(o):"Recent Posts"}},filters:{timeStamp:function(t,e){var n=e.year,r=e.month,o=(e.day,(t=t instanceof Date?t:new Date(t)).getHours()&&t.getMinutes());return Intl.DateTimeFormat(l,{hour12:!1,month:r?void 0:"long",year:n?void 0:"numeric",day:"2-digit",hour:o?"numeric":void 0,minute:o?"2-digit":void 0}).format(t)}}},m=(n(249),n(2)),component=Object(m.a)(d,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"blog"},[n("h1",{staticClass:"title is-3"},[t._v("\n    "+t._s(t.dateHeader)+"\n  ")]),t._v(" "),n("ul",t._l(t.list.filter(function(i){return i.title}),function(e){return n("li",{key:e.url},[n("h2",{staticClass:"title is-4"},[n("nuxt-link",{attrs:{to:e.url}},[t._v("\n          "+t._s(e.title)+"\n        ")])],1),t._v(" "),e.date?n("h3",{staticClass:"subtitle is-6"},[n("nuxt-link",{attrs:{to:e.url}},[n("i",{staticClass:"fa fa-calendar"}),t._v("  \n          "+t._s(t._f("timeStamp")(e.date,t.$route.params))+"\n        ")])],1):t._e()])}),0)])},[],!1,null,null,null);e.default=component.exports}}]);
\ No newline at end of file
diff --git a/files/c3e469380ccd51a92bb6.js b/files/2918aa6661dd624eef70.js
similarity index 96%
rename from files/c3e469380ccd51a92bb6.js
rename to files/2918aa6661dd624eef70.js
index 2ce2cec..d97ed4d 100644
--- a/files/c3e469380ccd51a92bb6.js
+++ b/files/2918aa6661dd624eef70.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{170:function(t,e,n){},248:function(t,e,n){"use strict";var r=n(170);n.n(r).a},367:function(t,e,n){"use strict";n.r(e);n(46),n(45);var r=n(5),o=(n(62),n(198)),c=n.n(o),l=(navigator.languages&&navigator.languages[0]||navigator.language||navigator.userLanguage).toLowerCase().split(/[_-]+/)[0],v={layout:"sidebar",head:function(){return{title:this.post.title}},asyncData:function(){var t=Object(r.a)(regeneratorRuntime.mark(function t(e){var n,r;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(n=e.params,r=e.payload,t.t1=r,t.t1){t.next=9;break}if(t.t2=n.name,!t.t2){t.next=8;break}return t.next=7,c.a.get("".concat("/","unide/files/posts/").concat(n.name,".json"));case 7:t.t2=t.sent.data;case 8:t.t1=t.t2;case 9:if(t.t0=t.t1,t.t0){t.next=12;break}t.t0={};case 12:return t.t3=t.t0,t.abrupt("return",{post:t.t3});case 14:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}(),filters:{timeStamp:function(t){var e=(t=t instanceof Date?t:new Date(t)).getHours()&&t.getMinutes();return Intl.DateTimeFormat(l,{hour12:!1,year:"2-digit",month:"2-digit",day:"2-digit",hour:e?"numeric":void 0,minute:e?"2-digit":void 0}).format(t)}}},f=(n(248),n(2)),component=Object(f.a)(v,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"article"},[t.post.title?n("h1",{staticClass:"title is-3"},[t._v("\n    "+t._s(t.post.title)+"\n  ")]):t._e(),t._v(" "),t.post.title&&t.post.date?n("h2",{staticClass:"subtitle is-6"},[n("i",{staticClass:"fa fa-calendar"}),t._v("  \n    "+t._s(t._f("timeStamp")(t.post.date))+"\n  ")]):t._e(),t._v(" "),n("div",{staticClass:"content"},[n("div",{domProps:{innerHTML:t._s(t.post.content)}})]),t._v(" "),n("div",{staticClass:"columns pageNav"},[t.post.prev?n("div",{staticClass:"column"},[n("nuxt-link",{staticClass:"button is-fullwidth",attrs:{to:t.post.prev.url}},[n("span",{staticClass:"icon"},[n("i",{staticClass:"fa fa-chevron-left"})]),t._v(" "),n("span",[t._v(t._s(t.post.prev.title))])])],1):t._e(),t._v(" "),t.post.next?n("div",{staticClass:"column"},[n("nuxt-link",{staticClass:"button is-fullwidth",attrs:{to:t.post.next.url}},[n("span",[t._v(t._s(t.post.next.title))]),t._v(" "),n("span",{staticClass:"icon"},[n("i",{staticClass:"fa fa-chevron-right"})])])],1):t._e()])])},[],!1,null,null,null);e.default=component.exports}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{170:function(t,e,n){},248:function(t,e,n){"use strict";var r=n(170);n.n(r).a},358:function(t,e,n){"use strict";n.r(e);n(46),n(45);var r=n(5),o=(n(62),n(198)),c=n.n(o),l=(navigator.languages&&navigator.languages[0]||navigator.language||navigator.userLanguage).toLowerCase().split(/[_-]+/)[0],v={layout:"sidebar",head:function(){return{title:this.post.title}},asyncData:function(){var t=Object(r.a)(regeneratorRuntime.mark(function t(e){var n,r;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(n=e.params,r=e.payload,t.t1=r,t.t1){t.next=9;break}if(t.t2=n.name,!t.t2){t.next=8;break}return t.next=7,c.a.get("".concat("/","unide/files/posts/").concat(n.name,".json"));case 7:t.t2=t.sent.data;case 8:t.t1=t.t2;case 9:if(t.t0=t.t1,t.t0){t.next=12;break}t.t0={};case 12:return t.t3=t.t0,t.abrupt("return",{post:t.t3});case 14:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}(),filters:{timeStamp:function(t){var e=(t=t instanceof Date?t:new Date(t)).getHours()&&t.getMinutes();return Intl.DateTimeFormat(l,{hour12:!1,year:"2-digit",month:"2-digit",day:"2-digit",hour:e?"numeric":void 0,minute:e?"2-digit":void 0}).format(t)}}},f=(n(248),n(2)),component=Object(f.a)(v,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"article"},[t.post.title?n("h1",{staticClass:"title is-3"},[t._v("\n    "+t._s(t.post.title)+"\n  ")]):t._e(),t._v(" "),t.post.title&&t.post.date?n("h2",{staticClass:"subtitle is-6"},[n("i",{staticClass:"fa fa-calendar"}),t._v("  \n    "+t._s(t._f("timeStamp")(t.post.date))+"\n  ")]):t._e(),t._v(" "),n("div",{staticClass:"content"},[n("div",{domProps:{innerHTML:t._s(t.post.content)}})]),t._v(" "),n("div",{staticClass:"columns pageNav"},[t.post.prev?n("div",{staticClass:"column"},[n("nuxt-link",{staticClass:"button is-fullwidth",attrs:{to:t.post.prev.url}},[n("span",{staticClass:"icon"},[n("i",{staticClass:"fa fa-chevron-left"})]),t._v(" "),n("span",[t._v(t._s(t.post.prev.title))])])],1):t._e(),t._v(" "),t.post.next?n("div",{staticClass:"column"},[n("nuxt-link",{staticClass:"button is-fullwidth",attrs:{to:t.post.next.url}},[n("span",[t._v(t._s(t.post.next.title))]),t._v(" "),n("span",{staticClass:"icon"},[n("i",{staticClass:"fa fa-chevron-right"})])])],1):t._e()])])},[],!1,null,null,null);e.default=component.exports}}]);
\ No newline at end of file
diff --git a/files/ab8f3355d1ddf7500408.js b/files/30395b316d9140e79ffe.js
similarity index 98%
rename from files/ab8f3355d1ddf7500408.js
rename to files/30395b316d9140e79ffe.js
index 53d724f..13b57b2 100644
--- a/files/ab8f3355d1ddf7500408.js
+++ b/files/30395b316d9140e79ffe.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{197:function(e,t,n){},350:function(e,t,n){"use strict";var o=n(197);n.n(o).a},369:function(e,t,n){"use strict";n.r(t);n(350);var o=n(2),component=Object(o.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"home"},[n("div",[n("h1",{staticClass:"title is-3"},[e._v("\n      Understand Industry devices\n    ")]),e._v(" "),n("div",{staticClass:"card is-pulled-right"},[n("div",{staticClass:"card-image"},[n("figure",{staticClass:"image"},[n("img",{attrs:{src:"images/languages.png",alt:"Overview Languages",title:"Overview Languages"}})])]),e._v(" "),n("div",{staticClass:"card-content"},[e._v("Languages of the world")])]),e._v(" "),n("p",{staticClass:"is-clearfix"},[e._v("\n      Imagine the following: You go on vacation to a foreign country and want to get by. Usually you will neither have the time nor the resources to learn a new language for each trip. Luckily this is not necessary. A handful of simple phrases such as "),n("i",[e._v("hello")]),e._v(", "),n("i",[e._v("I am hungry")]),e._v(", etc. are already sufficient to cope with many situations. To have such phrases at hand you don’t need to be fluent in a language, a mini phrase book will already cover a good portion. Thus, to master common situations in different languages you will be well served by a collection of mini phrase books in different languages.\n    ")]),e._v(" "),n("div",{staticClass:"card is-pulled-left"},[n("div",{staticClass:"card-image"},[n("figure",{staticClass:"image"},[n("img",{attrs:{src:"images/machines.jpg",alt:"EDM machines",title:"EDM machines"}})])]),e._v(" "),n("div",{staticClass:"card-content"},[e._v("Machines in production")])]),e._v(" "),n("p",{staticClass:"is-clearfix"},[e._v("\n    A similar experience we face in Industry 4.0: Imagine you are a system integrator, you want to realize a monitoring application for plants of a manufacturer and, since the Eclipse iot stack realizes a good portion of functionality you need to implement, you want to build your application on top of it. It would really help you if you can communicate with the machines on a simple, commonly understood protocol that is easily processible by the existing stack. However, there are a lot of different machines out there, using a lot of different languages and accents. Older machines especially do not speak new protocols (e.g. OPC-UA). Yet, we need to understand how to monitor their condition or interpret specific measurements."),n("br"),e._v("\n    A simple approach to send and understand such industry-specific content implemented for multiple systems would ease the use of the existing Eclipse iot stack and thereby help a lot on the way to a connected industry.\n    ")])]),e._v(" "),n("div",[n("div",{staticClass:"card is-pulled-right"},[n("div",{staticClass:"card-image"},[n("figure",{staticClass:"image"},[n("img",{attrs:{src:"images/analysis.jpg",alt:"Cooperation",title:"Cooperation"}})])]),e._v(" "),n("div",{staticClass:"card-content"},[e._v("Collaboration with partner")])]),e._v(" "),n("h2",{staticClass:"title is-4"},[e._v("Production Performance Management Protocol ("),n("i",[e._v("PPMP")]),e._v(")")]),e._v(" "),n("p",{staticClass:"is-clearfix"},[e._v("\n    Through hands-on experience and collaboration with customers and partners we learned which information is key in understanding industry devices. For example, when sending measurements, the currently produced part or lot number together with machine identification are crucial to get any useful interpretation out of the information."),n("br"),e._v("\n    We started to capture this information in a simple payload specification and just like in the introducing language example where you can use phrases via phone, letter or in person, the payload is meant to be sent over different protocols (REST, MQTT, AMQP). This payload is the Production Performance Management Protocol ("),n("i",[e._v("PPMP")]),e._v(").\n    ")]),e._v(" "),n("div",{staticClass:"card is-pulled-left"},[n("div",{staticClass:"card-image"},[n("figure",{staticClass:"image"},[n("img",{attrs:{src:"images/eclipse-426x100.png",alt:"Eclipse logo",title:"Eclipse logo"}})])])]),e._v(" "),n("p",[e._v("\n    In order to, first, leverage the Eclipse IoT stack in Industry 4.0 scenarios and, second, build a lively community around the specification, we consider the Eclipse iot working group as the premier place to host Unide.\n    ")])])])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{197:function(e,t,n){},350:function(e,t,n){"use strict";var o=n(197);n.n(o).a},370:function(e,t,n){"use strict";n.r(t);n(350);var o=n(2),component=Object(o.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"home"},[n("div",[n("h1",{staticClass:"title is-3"},[e._v("\n      Understand Industry devices\n    ")]),e._v(" "),n("div",{staticClass:"card is-pulled-right"},[n("div",{staticClass:"card-image"},[n("figure",{staticClass:"image"},[n("img",{attrs:{src:"images/languages.png",alt:"Overview Languages",title:"Overview Languages"}})])]),e._v(" "),n("div",{staticClass:"card-content"},[e._v("Languages of the world")])]),e._v(" "),n("p",{staticClass:"is-clearfix"},[e._v("\n      Imagine the following: You go on vacation to a foreign country and want to get by. Usually you will neither have the time nor the resources to learn a new language for each trip. Luckily this is not necessary. A handful of simple phrases such as "),n("i",[e._v("hello")]),e._v(", "),n("i",[e._v("I am hungry")]),e._v(", etc. are already sufficient to cope with many situations. To have such phrases at hand you don’t need to be fluent in a language, a mini phrase book will already cover a good portion. Thus, to master common situations in different languages you will be well served by a collection of mini phrase books in different languages.\n    ")]),e._v(" "),n("div",{staticClass:"card is-pulled-left"},[n("div",{staticClass:"card-image"},[n("figure",{staticClass:"image"},[n("img",{attrs:{src:"images/machines.jpg",alt:"EDM machines",title:"EDM machines"}})])]),e._v(" "),n("div",{staticClass:"card-content"},[e._v("Machines in production")])]),e._v(" "),n("p",{staticClass:"is-clearfix"},[e._v("\n    A similar experience we face in Industry 4.0: Imagine you are a system integrator, you want to realize a monitoring application for plants of a manufacturer and, since the Eclipse iot stack realizes a good portion of functionality you need to implement, you want to build your application on top of it. It would really help you if you can communicate with the machines on a simple, commonly understood protocol that is easily processible by the existing stack. However, there are a lot of different machines out there, using a lot of different languages and accents. Older machines especially do not speak new protocols (e.g. OPC-UA). Yet, we need to understand how to monitor their condition or interpret specific measurements."),n("br"),e._v("\n    A simple approach to send and understand such industry-specific content implemented for multiple systems would ease the use of the existing Eclipse iot stack and thereby help a lot on the way to a connected industry.\n    ")])]),e._v(" "),n("div",[n("div",{staticClass:"card is-pulled-right"},[n("div",{staticClass:"card-image"},[n("figure",{staticClass:"image"},[n("img",{attrs:{src:"images/analysis.jpg",alt:"Cooperation",title:"Cooperation"}})])]),e._v(" "),n("div",{staticClass:"card-content"},[e._v("Collaboration with partner")])]),e._v(" "),n("h2",{staticClass:"title is-4"},[e._v("Production Performance Management Protocol ("),n("i",[e._v("PPMP")]),e._v(")")]),e._v(" "),n("p",{staticClass:"is-clearfix"},[e._v("\n    Through hands-on experience and collaboration with customers and partners we learned which information is key in understanding industry devices. For example, when sending measurements, the currently produced part or lot number together with machine identification are crucial to get any useful interpretation out of the information."),n("br"),e._v("\n    We started to capture this information in a simple payload specification and just like in the introducing language example where you can use phrases via phone, letter or in person, the payload is meant to be sent over different protocols (REST, MQTT, AMQP). This payload is the Production Performance Management Protocol ("),n("i",[e._v("PPMP")]),e._v(").\n    ")]),e._v(" "),n("div",{staticClass:"card is-pulled-left"},[n("div",{staticClass:"card-image"},[n("figure",{staticClass:"image"},[n("img",{attrs:{src:"images/eclipse-426x100.png",alt:"Eclipse logo",title:"Eclipse logo"}})])])]),e._v(" "),n("p",[e._v("\n    In order to, first, leverage the Eclipse IoT stack in Industry 4.0 scenarios and, second, build a lively community around the specification, we consider the Eclipse iot working group as the premier place to host Unide.\n    ")])])])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
diff --git a/files/3bd3bd5c3610dfbadcf7.js b/files/3bd3bd5c3610dfbadcf7.js
deleted file mode 100644
index efe7c4a..0000000
--- a/files/3bd3bd5c3610dfbadcf7.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{370:function(e,t,n){"use strict";n.r(t);var r=n(2),component=Object(r.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"content"},[n("h1",[n("a",{attrs:{href:"#Communicating-Parties",title:"Communicating Parties"}}),e._v("\n    Communicating Parties\n  ")]),e._v(" "),n("p",[e._v("\n  Two parties are involved in a PPMP message exchange: the sender and the receiver. The sender pushes a message to the receiver. Usually the sender is a machine or a sensor of a machine.\n  ")]),e._v(" "),n("p",[e._v("\n  The receiver waits for messages. It offers a API that allows for sending either measurement payloads or message payloads.\n  ")]),e._v(" "),n("p",[e._v("\n  The communication is unidirectional. Only the sender can contact the receiver and send messages. No feedback from receiver to sender is provided.\n  ")]),e._v(" "),n("img",{staticClass:"is-centered",attrs:{src:"images/collaborators_v2.svg",alt:"Overview PPMP",title:"Overview PPMP"}})])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
diff --git a/files/a2e27af4b290334c2591.css b/files/3eb6ece015ac272cf6b8.css
similarity index 100%
rename from files/a2e27af4b290334c2591.css
rename to files/3eb6ece015ac272cf6b8.css
diff --git a/files/de162ef814559a2126c1.js b/files/42ea76d2884ad7b86a73.js
similarity index 100%
rename from files/de162ef814559a2126c1.js
rename to files/42ea76d2884ad7b86a73.js
diff --git a/files/b31d3354e22c4e6855e0.js b/files/4891cfeb702e0143e870.js
similarity index 97%
rename from files/b31d3354e22c4e6855e0.js
rename to files/4891cfeb702e0143e870.js
index 14255dc..2a59f44 100644
--- a/files/b31d3354e22c4e6855e0.js
+++ b/files/4891cfeb702e0143e870.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{360:function(e,t,n){"use strict";n.r(t);var c=n(153),r=(n(61),n(11)),o=(n(21),n(150),n(147)),l=n.n(o),m=n(149),d=n(155),h=n.n(d),v=n(159),f={head:function(){return{title:"Specification for machine messages"}},created:function(){var e=this,t=new Date,n="a4927dad-58d4-4580-b460-79cefd56775b";this.$static={message:{"content-spec":"urn:spec://eclipse.org/unide/machine-message#v3",device:{id:n},messages:[{ts:t.toISOString(),code:"190ABT"}]},multipleMachineMessages:{"content-spec":"urn:spec://eclipse.org/unide/machine-message#v3",device:{id:n,mode:"auto",state:"OK",additionalData:{swVersion:"2.0.3.13",swBuildID:"41535"}},messages:[{code:"190ABT",description:"Electronic control board or its electrical connections are damaged",hint:"Check the control board",origin:"sensor-id-992.2393.22",severity:"HIGH",source:"DEVICE",state:"NEW",title:"control board damaged",ts:t.toISOString(),type:"WARNING",additionalData:{firmware:"20130304_22.020"}},{code:"33-02",description:"Disk size has reached limit. Unable to write log files.",severity:"HIGH",source:"TECHNICAL_INFO",title:"Disk size limit reached",ts:new Date(t.valueOf()+100).toISOString()}]}},this.$static.examples=Object.entries(Object(r.a)({},["content-spec","device","device.id","device.mode","device.additionalData","messages","messages[0].code","messages[0].description","messages[0].hint","messages[0].origin","messages[0].severity","messages[0].source","messages[0].state","messages[0].title","messages[0].ts","messages[0].type","messages[0].additionalData"].reduce(function(e,t){return e[t.replace(/(^|\.)/g,"$1properties.").replace(/\[[^]]*]/g,".items")]=t,e},{}))).reduce(function(t,n){var r=Object(c.a)(n,2),o=r[0],path=r[1],l=h()(e.$static.message,path)||h()(e.$static.multipleMachineMessages,path);return l?t[o]=[l]:console.error('no example provided in machine-message for: "'.concat(o,'": "').concat(path,'"')),t},{})},filters:{stringify:function(e){return JSON.stringify(e," ",2)}},components:{card:m.a,prism:l.a,schemaDetail:v.a}},_=n(2),component=Object(_.a)(f,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"machine-message content"},[e._m(0),e._v(" "),n("p",[e._v("The main purpose of the machine message format is to allow devices and integrators to send messages containing an interpretation of measurement data or status.")]),e._v(" "),e._m(1),e._v(" "),n("schemaDetail",{attrs:{type:"v3/message",examples:e.$static.examples}},[n("card",{attrs:{collapsed:!0}},[n("template",{slot:"header"},[e._v("\n        Minimal message example\n      ")]),e._v(" "),n("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.message)))])],2),e._v(" "),n("card",{attrs:{collapsed:!0}},[n("template",{slot:"header"},[e._v("\n        Multiple message example\n      ")]),e._v(" "),n("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.multipleMachineMessages)))])],2)],1)],1)},[function(){var e=this.$createElement,t=this._self._c||e;return t("h1",[t("a",{attrs:{id:"Message-Payload",title:"Machine Message Payload"}}),this._v("\n    Machine Message Payload\n  ")])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"diagram"},[t("img",{attrs:{src:"images/specification/v3/messagePayload.svg",alt:"Class diagram of the message payload",title:"Class diagram of the message payload"}})])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{366:function(e,t,n){"use strict";n.r(t);var c=n(153),r=(n(61),n(11)),o=(n(21),n(150),n(147)),l=n.n(o),m=n(149),d=n(155),h=n.n(d),v=n(159),f={head:function(){return{title:"Specification for machine messages"}},created:function(){var e=this,t=new Date,n="a4927dad-58d4-4580-b460-79cefd56775b";this.$static={message:{"content-spec":"urn:spec://eclipse.org/unide/machine-message#v3",device:{id:n},messages:[{ts:t.toISOString(),code:"190ABT"}]},multipleMachineMessages:{"content-spec":"urn:spec://eclipse.org/unide/machine-message#v3",device:{id:n,mode:"auto",state:"OK",additionalData:{swVersion:"2.0.3.13",swBuildID:"41535"}},messages:[{code:"190ABT",description:"Electronic control board or its electrical connections are damaged",hint:"Check the control board",origin:"sensor-id-992.2393.22",severity:"HIGH",source:"DEVICE",state:"NEW",title:"control board damaged",ts:t.toISOString(),type:"WARNING",additionalData:{firmware:"20130304_22.020"}},{code:"33-02",description:"Disk size has reached limit. Unable to write log files.",severity:"HIGH",source:"TECHNICAL_INFO",title:"Disk size limit reached",ts:new Date(t.valueOf()+100).toISOString()}]}},this.$static.examples=Object.entries(Object(r.a)({},["content-spec","device","device.id","device.mode","device.additionalData","messages","messages[0].code","messages[0].description","messages[0].hint","messages[0].origin","messages[0].severity","messages[0].source","messages[0].state","messages[0].title","messages[0].ts","messages[0].type","messages[0].additionalData"].reduce(function(e,t){return e[t.replace(/(^|\.)/g,"$1properties.").replace(/\[[^]]*]/g,".items")]=t,e},{}))).reduce(function(t,n){var r=Object(c.a)(n,2),o=r[0],path=r[1],l=h()(e.$static.message,path)||h()(e.$static.multipleMachineMessages,path);return l?t[o]=[l]:console.error('no example provided in machine-message for: "'.concat(o,'": "').concat(path,'"')),t},{})},filters:{stringify:function(e){return JSON.stringify(e," ",2)}},components:{card:m.a,prism:l.a,schemaDetail:v.a}},_=n(2),component=Object(_.a)(f,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"machine-message content"},[e._m(0),e._v(" "),n("p",[e._v("The main purpose of the machine message format is to allow devices and integrators to send messages containing an interpretation of measurement data or status.")]),e._v(" "),e._m(1),e._v(" "),n("schemaDetail",{attrs:{type:"v3/message",examples:e.$static.examples}},[n("card",{attrs:{collapsed:!0}},[n("template",{slot:"header"},[e._v("\n        Minimal message example\n      ")]),e._v(" "),n("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.message)))])],2),e._v(" "),n("card",{attrs:{collapsed:!0}},[n("template",{slot:"header"},[e._v("\n        Multiple message example\n      ")]),e._v(" "),n("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.multipleMachineMessages)))])],2)],1)],1)},[function(){var e=this.$createElement,t=this._self._c||e;return t("h1",[t("a",{attrs:{id:"Message-Payload",title:"Machine Message Payload"}}),this._v("\n    Machine Message Payload\n  ")])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"diagram"},[t("img",{attrs:{src:"images/specification/v3/messagePayload.svg",alt:"Class diagram of the message payload",title:"Class diagram of the message payload"}})])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
diff --git a/files/5559b707095db7adf400.js b/files/5559b707095db7adf400.js
new file mode 100644
index 0000000..450aeeb
--- /dev/null
+++ b/files/5559b707095db7adf400.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{149:function(e,t,n){"use strict";var o={props:{collapsed:{type:Boolean,default:!1}},data:function(){return{expanded:!this.collapsed,transitioning:!1}},watch:{collapsed:function(e){this.expanded=!e}},methods:{beforeenter:function(e){this.transitioning=!0,e.style.height=0},enter:function(e){e.style.height=e.scrollHeight+"px"},afterenter:function(e){e.style.height="",this.transitioning=!1},beforeleave:function(e){this.transitioning=!0,e.style.height=e.offsetHeight+"px",e.offsetHeight},leave:function(e){e.style.height=0,e.offsetHeight},afterleave:function(e){this.transitioning=!1},toggle:function(){this.transitioning||(this.expanded=!this.expanded,this.$emit(this.expanded?"expanding":"collapsing",this.id))}}},r=(n(172),n(2)),component=Object(r.a)(o,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"card collapsibleCard",class:{collapsed:!e.expanded}},[e.$slots.header?n("header",{staticClass:"card-header",on:{click:function(t){return t.preventDefault(),e.toggle()}}},[n("p",{staticClass:"card-header-title"},[!e.$slots.headerCollapsed||e.expanded?e._t("header"):e._t("headerCollapsed")],2),e._v(" "),n("a",{staticClass:"card-header-icon"},[n("span",{staticClass:"icon"},[n("i",{staticClass:"fa",class:{"fa-angle-down":e.expanded,"fa-angle-up":!e.expanded}})])])]):e._e(),e._v(" "),n("transition",{attrs:{name:"rollup","leave-active-class":"collapsing","enter-active-class":"collapsing"},on:{"before-leave":e.beforeleave,leave:e.leave,"after-leave":e.afterleave,"before-enter":e.beforeenter,enter:e.enter,"after-enter":e.afterenter}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.expanded,expression:"expanded"}]},[n("div",{staticClass:"card-content"},[e._t("default")],2)])])],1)},[],!1,null,null,null);t.a=component.exports},154:function(e,t,n){},172:function(e,t,n){"use strict";var o=n(154);n.n(o).a},173:function(e,t,n){},250:function(e,t,n){"use strict";var o=n(173);n.n(o).a},360:function(e,t,n){"use strict";n.r(t);var o={layout:"sidebar",head:function(){return{title:"Frequently asked questions"}},data:function(){return{faqs:[{question:'What does "Unide" stand for?',answer:"The projects name is derived from understand industry devices. Other ideas like connect industry machines turned out to have meanings in foreign languages or being trademarked already.<br/>Regarding the logo: Unide and Production Performance Management Protocol's goal is to enable you to connect machines and receive their measurements / alerts. The logo represents that. It has you ('<i>U</i>') highlighted and connects to rings. As a side note, we found that the words almost look like <i>you-nice</i>."},{question:"What's the difference between Unide and the Production Performance Management Protocol?",answer:'The Production Performance Mangement Protocol (PPMP) is the name of the structure of the <a href="specification/">payload</a> whereas Unide is the project that aims to provide sample implementations and further development of this protocol in and with the Eclipse Open Source community. Nevertheless, the Production Performance Management Protocol is an open suggestion, and everyone is welcome to using it, even without contributing to the Unide project.'},{question:"Why introducing another industry protocol?",answer:"There are already plenty of transport protocols (REST, AMQP, etc.) available. The Production Performance Management Protocol aims to provide the very industry specific semantic structure for their payload. So it aims to complete such IoT transport infrastructure and bridge the gap to the manufacturing domain. OPC-DA/UA on the other hand covers full service oriented architecture, security concerns and information model, which makes it more complex and costly to implement and operate. In some use cases, this is not necessary."},{question:"Why have you choosen JSON as syntax?",answer:"JSON is a good fit regarding understandability and size. Having a structured and comprehensible basis is the first step for acceptance in the industry. In the spirit of Donald E. Knuth (\"<a href='http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.103.6084'><i>premature optimization is the root of all evil</i></a>\"), further compacting is possible in a later stage."},{question:"Why are time and measurement points separated in multiple arrays?",answer:"We have discussed multiple options for <a href='specification'>series</a>: having an array of<br/>tupels (<code>[[0, 23.34],[...],...]</code>),<br/>plain objects (<code>[{time: 0, temperature: 23.34}, {...}...]</code>),<br/>objects with time as key (<code>{ \"0\": [23.34,...],...}</code>) and other.<br/>When parsing, we had to recognize, that unsigned long int for time and floating point measurements are of different types. Also, all former variants are more verbose due to additional brackets, commas or quotation marks. We believe that the current version is a good compromise between readability and structure."},{question:"I'm interested in Unide/Production Performance Management Protocol. How can I contribute?",answer:'The first goal of Unide is to provide sample client/server implementations of the Production Performance Management Protocol. Secondly, we\'re looking forward to improving the Production Performance Management Protocol in future versions together with the eclipse community.<br/>If you want to contribute with source code, use cases or implementing it in your devices, let us know and discuss in the <a href="https://github.com/eclipse/unide">unide forum</a> or by forking / filing an issue on <a href="https://github.com/eclipse/unide">github</a>.'},{question:"Why have you included content-spec uri, if that can also be expressed in the a REST url already?",answer:'<a href="specification">content-spec</a> is included in the payload, because the Production Performance Management Protocol does not rely on a specific transport protocol (like REST).'}]}},components:{card:n(149).a}},r=(n(250),n(2)),component=Object(r.a)(o,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"faq"},[n("h1",{staticClass:"title is-3"},[e._v("\n    Frequently Asked Questions\n  ")]),e._v(" "),e._m(0),e._v(" "),n("div",{staticClass:"accordion"},e._l(e.faqs,function(t,o){return n("card",{key:o,attrs:{collapsed:!0}},[n("template",{slot:"header"},[e._v("\n        "+e._s(t.question)+"\n      ")]),e._v(" "),n("div",{domProps:{innerHTML:e._s(t.answer)}})],2)}),1)])},[function(){var e=this.$createElement,t=this._self._c||e;return t("div",[this._v("\n    We assembled a few frequently asked questions about the Production Performance Protocol (PPMP) and the Unide project. You're welcome to raise your questions in the "),t("a",{attrs:{href:"https://www.eclipse.org/forums/index.php/f/348/"}},[this._v("Unide forum")]),this._v(".\n  ")])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
diff --git a/files/5572a70754dbaa365e55.js b/files/5572a70754dbaa365e55.js
deleted file mode 100644
index 0d62849..0000000
--- a/files/5572a70754dbaa365e55.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{147:function(e,t,n){"use strict";function o(e){for(var t=arguments,i=1;i<arguments.length;i++)for(var p in arguments[i])e[p]=t[i][p];return e}var r={functional:!0,props:{code:{type:String},inline:{type:Boolean,default:!1},language:{type:String,default:"markup"}},render:function(e,t){var code=t.props.code||(t.children&&t.children.length>0?t.children[0].text:""),n=t.props.inline,r=t.props.language,c=Prism.languages[r],l="language-"+r;return n?e("code",o({},t.data,{class:[t.data.class,l],domProps:o({},t.data.domProps,{innerHTML:Prism.highlight(code,c)})})):e("pre",o({},t.data,{class:[t.data.class,l]}),[e("code",{class:l,domProps:{innerHTML:Prism.highlight(code,c)}})])}};e.exports=r},174:function(e,t,n){},251:function(e,t,n){"use strict";var o=n(174);n.n(o).a},364:function(e,t,n){"use strict";n.r(t);var o=n(147),r={head:function(){return{title:"Specification"}},asyncData:function(e){return{isStatic:e.isStatic}},components:{prism:n.n(o).a}},c=(n(251),n(2)),component=Object(c.a)(r,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"specification"},[n("div",{staticClass:"content"},[e._m(0),e._v(" "),n("h2",[e._v("Rationale")]),e._v(" "),n("p",[e._v("\n      Noticeably in recent years, there is a continuous increase in demand, price pressure and complexity in manufacturing. Things need to move faster, be more flexible, and fulfill higher quality standards forcing manufacturers to optimize their processes.\n      ")]),e._v(" "),n("p",[e._v("\n      Production facilities and their performance have a huge impact on the overall performance of manufacturing processes. However, to identify bottlenecks and possibilities for improvements detailed data from machines are required.\n      ")]),e._v(" "),n("p",[e._v("\n      Such data is surely provided by machines either via modern protocols such as OPC UA or via proprietary access methods but it is not provided in a common and easily accessible format, which can be used to do performance analysis and optimization. This renders holistic process improvement efforts infeasible for many, especially smaller organizations.\n      ")]),e._v(" "),n("p",[e._v("\n      The Production Performance Management Protocol (PPMP) specifies a format that allows to capture data that is required to do performance analysis of production facilities. It allows monitoring backends to collect and evaluate key metrics of machines in the context of a production process. It is doing that by allowing to relate the machine status with currently produced parts.\n      ")]),e._v(" "),n("p",[e._v("\n      The specification is structured into three payload formats: Measurement payload, message payload and process payload. The Measurement payload contains measurements from machines such as the temperature of a machine at a specific point in time together with the currently produced part. The message payload contains arbitrary messages sent by a machine, e.g. alerts or the like. A process message consists of information about a discrete e.g. tightening or welding process with all their characterizing data, which are needed to describe and analyze it.\n      ")]),e._v(" "),n("p",[e._v("\n      The default way of transporting the json payload is via http to allow for an easy integration into various backend systems. Other transportation methods are possible and welcome.\n      ")]),e._v(" "),n("h2",[e._v("Validation")]),e._v(" "),n("p",[e._v("\n        Did you know that you can easily validate your PPMP payload against the published online version of PPMP? For exapmle, "),n("a",{attrs:{href:"https://www.jsonschemavalidator.net"}},[e._v("jsonschemavalidator.net")]),e._v(" provides an online validation frontend. Just use your payload as JSON input and the respective github link to the PPMP specification as a "),n("code",[e._v("$ref")]),e._v(" in the schema. For example:\n        "),n("prism",{attrs:{language:"json"}},[e._v('{\n  "$ref": "https://raw.githubusercontent.com/eclipse/unide/master/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json"\n}')])],1)]),e._v(" "),n("div",{staticClass:"columns",attrs:{id:"messageDetail"}},[n("div",{staticClass:"column"},[n("nuxt-link",{attrs:{to:"/specification"+(e.isStatic?"#messageDetail":""),exact:""}},[e._v("\n          Overview\n        ")])],1),e._v(" "),n("div",{staticClass:"column"},[n("nuxt-link",{class:{"nuxt-link-active":e.$route.path.endsWith("machine-message")},attrs:{to:"/specification/machine-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          Machine Message\n        ")]),e._v("\n        (v\n        "),n("nuxt-link",{attrs:{to:"/specification/v2/machine-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          2\n        ")]),e._v("\n        /\n        "),n("nuxt-link",{attrs:{to:"/specification/v3/machine-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          3\n         ")]),e._v("\n        )\n      ")],1),e._v(" "),n("div",{staticClass:"column"},[n("nuxt-link",{class:{"nuxt-link-active":e.$route.path.endsWith("measurement-message")},attrs:{to:"/specification/measurement-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          Measurement Message\n        ")]),e._v("\n        (v\n        "),n("nuxt-link",{attrs:{to:"/specification/v2/measurement-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          2\n        ")]),e._v("\n        /\n        "),n("nuxt-link",{attrs:{to:"/specification/v3/measurement-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          3\n        ")]),e._v("\n        )\n      ")],1),e._v(" "),n("div",{staticClass:"column"},[n("nuxt-link",{class:{"nuxt-link-active":e.$route.path.endsWith("process-message")},attrs:{to:"/specification/process-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          Process Message\n        ")]),e._v("\n        (v\n        "),n("nuxt-link",{attrs:{to:"/specification/v2/process-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          2\n        ")]),e._v("\n        /\n        "),n("nuxt-link",{attrs:{to:"/specification/v3/process-message"+(e.isStatic?"#messageDetail":"")}},[e._v("\n          3\n        ")]),e._v("\n        )\n      ")],1)]),e._v(" "),n("nuxt-child")],1)},[function(){var e=this.$createElement,t=this._self._c||e;return t("h1",[t("a",{attrs:{id:"PPMP-Specification",title:"PPMP Specification"}}),this._v("\n        PPMP Specification\n      ")])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
diff --git a/files/ba289679d90095018de3.js b/files/56b18d727e8153033d26.js
similarity index 98%
rename from files/ba289679d90095018de3.js
rename to files/56b18d727e8153033d26.js
index bf9dd3e..0a9a510 100644
--- a/files/ba289679d90095018de3.js
+++ b/files/56b18d727e8153033d26.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{359:function(e,t,r){"use strict";r.r(t);var n=r(153),m=(r(61),r(11)),o=(r(21),r(150),r(147)),c=r.n(o),l=r(149),d=r(155),f=r.n(d),v=r(159),_={head:function(){return{title:"Specification for measurement messages"}},created:function(){var e=this,t=new Date,r="a4927dad-58d4-4580-b460-79cefd56775b";this.$static={message:{"content-spec":"urn:spec://eclipse.org/unide/measurement-message#v3",device:{id:r},measurements:[{ts:t.toISOString(),series:{time:[0,23,24],temperature:[45.4231,46.4222,44.2432]}}]},complexMessage:{"content-spec":"urn:spec://eclipse.org/unide/measurement-message#v3",device:{id:r,mode:"maintenance",state:"WARN",additionalData:{swVersion:"2.0.3.13",swBuildID:"41535"}},part:{code:"HUH289",id:"420003844",type:"BATCH",typeId:"F00VH07328",result:"OK",additionalData:{lotID:"845849",toolID:"32324-432143"}},measurements:[{code:"190ABT",context:{temperature:{limits:{lowerError:-2,lowerWarn:-1,target:1.21,upperError:5,upperWarn:1.5},namespace:"https://mycompany.com/metaModel/v3",unit:"Cel",additionalData:{offset:37,accuracy:[.112,.115,.129]}}},result:"OK",series:{time:[0,23,24],temperature:[.4231,2.4222,4.2432]},ts:t.toISOString()},{context:{scanData:{type:"BASE64"}},series:{time:[0,130,2633],pressure:[100952.4,100946.32,100944.2432],scanData:["Zm9vCg==","YmFyCg==","Y2hlZXNlCg=="]},ts:new Date(t.valueOf()-5e3).toISOString()}]}},this.$static.examples=Object.entries(Object(m.a)({},["content-spec","device","device.id","device.mode","device.state","device.additionalData","part","part.code","part.id","part.result","part.type","part.typeId","part.additionalData","measurements","part","part.code","part.id","part.typeId","part.result"].reduce(function(e,t){return e[t.replace(/(^|\.)/g,"$1properties.").replace(/\[[^]]*]/g,".items")]=t,e},{"properties.measurements.allOf[0].items.properties.code":"measurements[0].code","properties.measurements.allOf[0].items.properties.context":"measurements[0].context","properties.measurements.allOf[0].items.properties.result":"measurements[0].result","properties.measurements.allOf[0].items.properties.ts":"measurements[0].ts",'properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"]':"measurements[0].context.temperature","properties.measurements.allOf[0].items.properties.series":"measurements[0].series",'properties.measurements.allOf[0].items.properties.series.patternProperties["^[^$]+"]':"measurements[0].series.temperature"}),["limits","unit"].reduce(function(e,t){return e['properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.'.concat(t)]="measurements[0].context.temperature.".concat(t),e},{}),["lowerError","lowerWarn","target","upperError","upperWarn"].reduce(function(e,t){return e['properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.limits.oneOf[0].properties.'.concat(t)]="measurements[0].context.temperature.limits.".concat(t),e},{}))).reduce(function(t,r){var m=Object(n.a)(r,2),o=m[0],path=m[1],c=f()(e.$static.message,path)||f()(e.$static.complexMessage,path);return c?t[o]=[c]:console.error('no example provided in measurement-message for:\n"'.concat(o,'": "').concat(path,'"')),t},{})},filters:{stringify:function(e){return JSON.stringify(e," ",2)}},components:{card:l.a,prism:c.a,schemaDetail:v.a}},h=r(2),component=Object(h.a)(_,function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"measurement-message content"},[e._m(0),e._v(" "),r("p",[e._v("The measurement message is the format to exchange simple (non-structured, non-complex ) measurement data. It also allows to transport multiple measurement data (eg. values over time), called 'series'.")]),e._v(" "),e._m(1),e._v(" "),r("schemaDetail",{attrs:{type:"v3/measurement",examples:e.$static.examples}},[r("card",{attrs:{collapsed:!0}},[r("template",{slot:"header"},[e._v("\n        Minimal message example\n      ")]),e._v(" "),r("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.message)))])],2),e._v(" "),r("card",{attrs:{collapsed:!0}},[r("template",{slot:"header"},[e._v("\n        Multiple message example\n      ")]),e._v(" "),r("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.complexMessage)))])],2)],1)],1)},[function(){var e=this.$createElement,t=this._self._c||e;return t("h1",[t("a",{attrs:{id:"Measurement-Payload",title:"Measurement Message payload"}}),this._v("\n    Measurement Payload\n  ")])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"diagram"},[t("img",{attrs:{src:"images/specification/v3/measurementPayload.svg",alt:"Class diagram of the Measurement Message payload",title:"Class diagram of the Measurement Message payload"}})])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{367:function(e,t,r){"use strict";r.r(t);var n=r(153),m=(r(61),r(11)),o=(r(21),r(150),r(147)),c=r.n(o),l=r(149),d=r(155),f=r.n(d),v=r(159),_={head:function(){return{title:"Specification for measurement messages"}},created:function(){var e=this,t=new Date,r="a4927dad-58d4-4580-b460-79cefd56775b";this.$static={message:{"content-spec":"urn:spec://eclipse.org/unide/measurement-message#v3",device:{id:r},measurements:[{ts:t.toISOString(),series:{time:[0,23,24],temperature:[45.4231,46.4222,44.2432]}}]},complexMessage:{"content-spec":"urn:spec://eclipse.org/unide/measurement-message#v3",device:{id:r,mode:"maintenance",state:"WARN",additionalData:{swVersion:"2.0.3.13",swBuildID:"41535"}},part:{code:"HUH289",id:"420003844",type:"BATCH",typeId:"F00VH07328",result:"OK",additionalData:{lotID:"845849",toolID:"32324-432143"}},measurements:[{code:"190ABT",context:{temperature:{limits:{lowerError:-2,lowerWarn:-1,target:1.21,upperError:5,upperWarn:1.5},namespace:"https://mycompany.com/metaModel/v3",unit:"Cel",additionalData:{offset:37,accuracy:[.112,.115,.129]}}},result:"OK",series:{time:[0,23,24],temperature:[.4231,2.4222,4.2432]},ts:t.toISOString()},{context:{scanData:{type:"BASE64"}},series:{time:[0,130,2633],pressure:[100952.4,100946.32,100944.2432],scanData:["Zm9vCg==","YmFyCg==","Y2hlZXNlCg=="]},ts:new Date(t.valueOf()-5e3).toISOString()}]}},this.$static.examples=Object.entries(Object(m.a)({},["content-spec","device","device.id","device.mode","device.state","device.additionalData","part","part.code","part.id","part.result","part.type","part.typeId","part.additionalData","measurements","part","part.code","part.id","part.typeId","part.result"].reduce(function(e,t){return e[t.replace(/(^|\.)/g,"$1properties.").replace(/\[[^]]*]/g,".items")]=t,e},{"properties.measurements.allOf[0].items.properties.code":"measurements[0].code","properties.measurements.allOf[0].items.properties.context":"measurements[0].context","properties.measurements.allOf[0].items.properties.result":"measurements[0].result","properties.measurements.allOf[0].items.properties.ts":"measurements[0].ts",'properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"]':"measurements[0].context.temperature","properties.measurements.allOf[0].items.properties.series":"measurements[0].series",'properties.measurements.allOf[0].items.properties.series.patternProperties["^[^$]+"]':"measurements[0].series.temperature"}),["limits","unit"].reduce(function(e,t){return e['properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.'.concat(t)]="measurements[0].context.temperature.".concat(t),e},{}),["lowerError","lowerWarn","target","upperError","upperWarn"].reduce(function(e,t){return e['properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.limits.oneOf[0].properties.'.concat(t)]="measurements[0].context.temperature.limits.".concat(t),e},{}))).reduce(function(t,r){var m=Object(n.a)(r,2),o=m[0],path=m[1],c=f()(e.$static.message,path)||f()(e.$static.complexMessage,path);return c?t[o]=[c]:console.error('no example provided in measurement-message for:\n"'.concat(o,'": "').concat(path,'"')),t},{})},filters:{stringify:function(e){return JSON.stringify(e," ",2)}},components:{card:l.a,prism:c.a,schemaDetail:v.a}},h=r(2),component=Object(h.a)(_,function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"measurement-message content"},[e._m(0),e._v(" "),r("p",[e._v("The measurement message is the format to exchange simple (non-structured, non-complex ) measurement data. It also allows to transport multiple measurement data (eg. values over time), called 'series'.")]),e._v(" "),e._m(1),e._v(" "),r("schemaDetail",{attrs:{type:"v3/measurement",examples:e.$static.examples}},[r("card",{attrs:{collapsed:!0}},[r("template",{slot:"header"},[e._v("\n        Minimal message example\n      ")]),e._v(" "),r("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.message)))])],2),e._v(" "),r("card",{attrs:{collapsed:!0}},[r("template",{slot:"header"},[e._v("\n        Multiple message example\n      ")]),e._v(" "),r("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.complexMessage)))])],2)],1)],1)},[function(){var e=this.$createElement,t=this._self._c||e;return t("h1",[t("a",{attrs:{id:"Measurement-Payload",title:"Measurement Message payload"}}),this._v("\n    Measurement Payload\n  ")])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"diagram"},[t("img",{attrs:{src:"images/specification/v3/measurementPayload.svg",alt:"Class diagram of the Measurement Message payload",title:"Class diagram of the Measurement Message payload"}})])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
diff --git a/files/7267eda02aa7844877f4.js b/files/7267eda02aa7844877f4.js
new file mode 100644
index 0000000..78fa68b
--- /dev/null
+++ b/files/7267eda02aa7844877f4.js
@@ -0,0 +1,2 @@
+/*! For license information please see LICENSES */
+(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{11:function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{},t=Object.keys(source);"function"==typeof Object.getOwnPropertySymbols&&(t=t.concat(Object.getOwnPropertySymbols(source).filter(function(e){return Object.getOwnPropertyDescriptor(source,e).enumerable}))),t.forEach(function(t){r(e,t,source[t])})}return e}n.d(t,"a",function(){return o})},120:function(e,t){function n(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}n.keys=function(){return[]},n.resolve=n,e.exports=n,n.id=120},134:function(e,t,n){"use strict";var r=n(37);n.n(r).a},135:function(e,t,n){"use strict";var r=n(38);n.n(r).a},136:function(e,t,n){},137:function(e,t,n){"use strict";var r=n(39);n.n(r).a},138:function(e,t,n){"use strict";var r=n(41);n.n(r).a},139:function(e,t,n){"use strict";var r=n(42);n.n(r).a},140:function(e,t,n){"use strict";var r=n(43);n.n(r).a},141:function(e,t,n){"use strict";var r=n(44);n.n(r).a},142:function(e,t,n){(function(t){var n="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},r=function(){var e=/\blang(?:uage)?-([\w-]+)\b/i,t=0,r=n.Prism={manual:n.Prism&&n.Prism.manual,disableWorkerMessageHandler:n.Prism&&n.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof o?new o(e.type,r.util.encode(e.content),e.alias):"Array"===r.util.type(e)?e.map(r.util.encode):e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function(e,t){var n=r.util.type(e);switch(t=t||{},n){case"Object":if(t[r.util.objId(e)])return t[r.util.objId(e)];var o={};for(var c in t[r.util.objId(e)]=o,e)e.hasOwnProperty(c)&&(o[c]=r.util.clone(e[c],t));return o;case"Array":if(t[r.util.objId(e)])return t[r.util.objId(e)];o=[];return t[r.util.objId(e)]=o,e.forEach(function(e,i){o[i]=r.util.clone(e,t)}),o}return e}},languages:{extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var o in t)n[o]=t[o];return n},insertBefore:function(e,t,n,o){var c=(o=o||r.languages)[e];if(2==arguments.length){for(var l in n=arguments[1])n.hasOwnProperty(l)&&(c[l]=n[l]);return c}var f={};for(var h in c)if(c.hasOwnProperty(h)){if(h==t)for(var l in n)n.hasOwnProperty(l)&&(f[l]=n[l]);f[h]=c[h]}return r.languages.DFS(r.languages,function(t,n){n===o[e]&&t!=e&&(this[t]=f)}),o[e]=f},DFS:function(e,t,n,o){for(var i in o=o||{},e)e.hasOwnProperty(i)&&(t.call(e,i,e[i],n||i),"Object"!==r.util.type(e[i])||o[r.util.objId(e[i])]?"Array"!==r.util.type(e[i])||o[r.util.objId(e[i])]||(o[r.util.objId(e[i])]=!0,r.languages.DFS(e[i],t,i,o)):(o[r.util.objId(e[i])]=!0,r.languages.DFS(e[i],t,null,o)))}},plugins:{},highlightAll:function(e,t){r.highlightAllUnder(document,e,t)},highlightAllUnder:function(e,t,n){var o={callback:n,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};r.hooks.run("before-highlightall",o);for(var element,c=o.elements||e.querySelectorAll(o.selector),i=0;element=c[i++];)r.highlightElement(element,!0===t,o.callback)},highlightElement:function(element,t,o){for(var c,l,f=element;f&&!e.test(f.className);)f=f.parentNode;f&&(c=(f.className.match(e)||[,""])[1].toLowerCase(),l=r.languages[c]),element.className=element.className.replace(e,"").replace(/\s+/g," ")+" language-"+c,element.parentNode&&(f=element.parentNode,/pre/i.test(f.nodeName)&&(f.className=f.className.replace(e,"").replace(/\s+/g," ")+" language-"+c));var h={element:element,language:c,grammar:l,code:element.textContent};if(r.hooks.run("before-sanity-check",h),!h.code||!h.grammar)return h.code&&(r.hooks.run("before-highlight",h),h.element.textContent=h.code,r.hooks.run("after-highlight",h)),void r.hooks.run("complete",h);if(r.hooks.run("before-highlight",h),t&&n.Worker){var d=new Worker(r.filename);d.onmessage=function(e){h.highlightedCode=e.data,r.hooks.run("before-insert",h),h.element.innerHTML=h.highlightedCode,o&&o.call(h.element),r.hooks.run("after-highlight",h),r.hooks.run("complete",h)},d.postMessage(JSON.stringify({language:h.language,code:h.code,immediateClose:!0}))}else h.highlightedCode=r.highlight(h.code,h.grammar,h.language),r.hooks.run("before-insert",h),h.element.innerHTML=h.highlightedCode,o&&o.call(element),r.hooks.run("after-highlight",h),r.hooks.run("complete",h)},highlight:function(text,e,t){var n={code:text,grammar:e,language:t};return r.hooks.run("before-tokenize",n),n.tokens=r.tokenize(n.code,n.grammar),r.hooks.run("after-tokenize",n),o.stringify(r.util.encode(n.tokens),n.language)},matchGrammar:function(text,e,t,n,o,c,l){var f=r.Token;for(var h in t)if(t.hasOwnProperty(h)&&t[h]){if(h==l)return;var d=t[h];d="Array"===r.util.type(d)?d:[d];for(var m=0;m<d.length;++m){var pattern=d[m],v=pattern.inside,y=!!pattern.lookbehind,x=!!pattern.greedy,w=0,_=pattern.alias;if(x&&!pattern.pattern.global){var k=pattern.pattern.toString().match(/[imuy]*$/)[0];pattern.pattern=RegExp(pattern.pattern.source,k+"g")}pattern=pattern.pattern||pattern;for(var i=n,C=o;i<e.length;C+=e[i].length,++i){var $=e[i];if(e.length>text.length)return;if(!($ instanceof f)){if(x&&i!=e.length-1){if(pattern.lastIndex=C,!(S=pattern.exec(text)))break;for(var E=S.index+(y?S[1].length:0),j=S.index+S[0].length,A=i,p=C,O=e.length;A<O&&(p<j||!e[A].type&&!e[A-1].greedy);++A)E>=(p+=e[A].length)&&(++i,C=p);if(e[i]instanceof f)continue;P=A-i,$=text.slice(C,p),S.index-=C}else{pattern.lastIndex=0;var S=pattern.exec($),P=1}if(S){y&&(w=S[1]?S[1].length:0);j=(E=S.index+w)+(S=S[0].slice(w)).length;var T=$.slice(0,E),R=$.slice(j),N=[i,P];T&&(++i,C+=T.length,N.push(T));var F=new f(h,v?r.tokenize(S,v):S,_,S,x);if(N.push(F),R&&N.push(R),Array.prototype.splice.apply(e,N),1!=P&&r.matchGrammar(text,e,t,i,C,!0,h),c)break}else if(c)break}}}}},tokenize:function(text,e,t){var n=[text],o=e.rest;if(o){for(var c in o)e[c]=o[c];delete e.rest}return r.matchGrammar(text,n,e,0,0,!1),n},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var o,i=0;o=n[i++];)o(t)}}},o=r.Token=function(e,content,t,n,r){this.type=e,this.content=content,this.alias=t,this.length=0|(n||"").length,this.greedy=!!r};if(o.stringify=function(e,t,n){if("string"==typeof e)return e;if("Array"===r.util.type(e))return e.map(function(element){return o.stringify(element,t,e)}).join("");var c={type:e.type,content:o.stringify(e.content,t,n),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:n};if(e.alias){var l="Array"===r.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(c.classes,l)}r.hooks.run("wrap",c);var f=Object.keys(c.attributes).map(function(e){return e+'="'+(c.attributes[e]||"").replace(/"/g,"&quot;")+'"'}).join(" ");return"<"+c.tag+' class="'+c.classes.join(" ")+'"'+(f?" "+f:"")+">"+c.content+"</"+c.tag+">"},!n.document)return n.addEventListener?(r.disableWorkerMessageHandler||n.addEventListener("message",function(e){var t=JSON.parse(e.data),o=t.language,code=t.code,c=t.immediateClose;n.postMessage(r.highlight(code,r.languages[o],o)),c&&n.close()},!1),n.Prism):n.Prism;var script=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return script&&(r.filename=script.src,r.manual||script.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(r.highlightAll):window.setTimeout(r.highlightAll,16):document.addEventListener("DOMContentLoaded",r.highlightAll))),n.Prism}();e.exports&&(e.exports=r),void 0!==t&&(t.Prism=r),r.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:/<!DOCTYPE[\s\S]+?>/i,cdata:/<!\[CDATA\[[\s\S]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},r.languages.markup.tag.inside["attr-value"].inside.entity=r.languages.markup.entity,r.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&amp;/,"&"))}),r.languages.xml=r.languages.markup,r.languages.html=r.languages.markup,r.languages.mathml=r.languages.markup,r.languages.svg=r.languages.markup,r.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},r.languages.css.atrule.inside.rest=r.languages.css,r.languages.markup&&(r.languages.insertBefore("markup","tag",{style:{pattern:/(<style[\s\S]*?>)[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:r.languages.css,alias:"language-css",greedy:!0}}),r.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:r.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:r.languages.css}},alias:"language-css"}},r.languages.markup.tag)),r.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/[a-z0-9_]+(?=\()/i,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},r.languages.javascript=r.languages.extend("clike",{keyword:/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),r.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"},constant:/\b[A-Z][A-Z\d_]*\b/}),r.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\${[^}]+}/,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}}}),r.languages.javascript["template-string"].inside.interpolation.inside.rest=r.languages.javascript,r.languages.markup&&r.languages.insertBefore("markup","tag",{script:{pattern:/(<script[\s\S]*?>)[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:r.languages.javascript,alias:"language-javascript",greedy:!0}}),r.languages.js=r.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(pre){for(var t,n=pre.getAttribute("data-src"),o=pre,c=/\blang(?:uage)?-([\w-]+)\b/i;o&&!c.test(o.className);)o=o.parentNode;if(o&&(t=(pre.className.match(c)||[,""])[1]),!t){var l=(n.match(/\.(\w+)$/)||[,""])[1];t=e[l]||l}var code=document.createElement("code");code.className="language-"+t,pre.textContent="",code.textContent="Loading…",pre.appendChild(code);var f=new XMLHttpRequest;f.open("GET",n,!0),f.onreadystatechange=function(){4==f.readyState&&(f.status<400&&f.responseText?(code.textContent=f.responseText,r.highlightElement(code)):f.status>=400?code.textContent="✖ Error "+f.status+" while fetching file: "+f.statusText:code.textContent="✖ Error: File does not exist or is empty")},f.send(null)}),r.plugins.toolbar&&r.plugins.toolbar.registerButton("download-file",function(e){var pre=e.element.parentNode;if(pre&&/pre/i.test(pre.nodeName)&&pre.hasAttribute("data-src")&&pre.hasAttribute("data-download-link")){var t=pre.getAttribute("data-src"),a=document.createElement("a");return a.textContent=pre.getAttribute("data-download-link-label")||"Download",a.setAttribute("download",""),a.href=t,a}})},document.addEventListener("DOMContentLoaded",self.Prism.fileHighlight))}).call(this,n(22))},143:function(e,t){Prism.languages.json={property:/"(?:\\.|[^\\"\r\n])*"(?=\s*:)/i,string:{pattern:/"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,greedy:!0},number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,punctuation:/[{}[\]);,]/,operator:/:/g,boolean:/\b(?:true|false)\b/i,null:/\bnull\b/i},Prism.languages.jsonp=Prism.languages.json},144:function(e,t,n){"use strict";n.r(t);n(66),n(51),n(52);function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e){return(o="function"==typeof Symbol&&"symbol"===r(Symbol.iterator)?function(e){return r(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":r(e)})(e)}n(45),n(102);var c=n(5),l=(n(78),n(80),n(63),n(21),n(64),n(46),n(83),n(107),n(119),n(0)),f=(n(61),n(120)),h=f.keys();function d(e){var t=f(e);return t.default||t}var m={},v=!0,y=!1,x=void 0;try{for(var w,_=h[Symbol.iterator]();!(v=(w=_.next()).done);v=!0){var k=w.value;m[k.replace(/^\.\//,"").replace(/\.(js|mjs|ts)$/,"")]=d(k)}}catch(e){y=!0,x=e}finally{try{v||null==_.return||_.return()}finally{if(y)throw x}}var C=m,$=(n(62),n(121),n(122),n(124),n(126),n(127),n(130),n(11));function E(e){l.a.config.errorHandler&&l.a.config.errorHandler(e)}function j(e){return e.then(function(e){return e.default||e})}function A(e,t){if(t||!e.options.__hasNuxtData){var n=e.options._originDataFn||e.options.data||function(){return{}};e.options._originDataFn=n,e.options.data=function(){var data=n.call(this);return this.$ssrContext&&(t=this.$ssrContext.asyncData[e.cid]),Object($.a)({},data,t)},e.options.__hasNuxtData=!0,e._Ctor&&e._Ctor.options&&(e._Ctor.options.data=e.options.data)}}function O(e){return e.options&&e._Ctor===e?e:(e.options?(e._Ctor=e,e.extendOptions=e.options):(e=l.a.extend(e))._Ctor=e,!e.options.name&&e.options.__file&&(e.options.name=e.options.__file),e)}function S(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return Array.prototype.concat.apply([],e.matched.map(function(e,n){return Object.keys(e.components).map(function(r){return t&&t.push(n),e.components[r]})}))}function P(e,t){return Array.prototype.concat.apply([],e.matched.map(function(e,n){return Object.keys(e.components).reduce(function(r,o){return e.components[o]?r.push(t(e.components[o],e.instances[o],e,o,n)):delete e.components[o],r},[])}))}function T(e){return Promise.all(P(e,function(){var e=Object(c.a)(regeneratorRuntime.mark(function e(t,n,r,o){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("function"!=typeof t||t.options){e.next=4;break}return e.next=3,t();case 3:t=e.sent;case 4:return r.components[o]=O(t),e.abrupt("return",r.components[o]);case 6:case"end":return e.stop()}},e)}));return function(t,n,r,o){return e.apply(this,arguments)}}()))}function R(e){return N.apply(this,arguments)}function N(){return(N=Object(c.a)(regeneratorRuntime.mark(function e(t){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,T(t);case 2:return e.abrupt("return",Object($.a)({},t,{meta:S(t).map(function(e,n){return Object($.a)({},e.options.meta,(t.matched[n]||{}).meta)})}));case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function F(e,t){return L.apply(this,arguments)}function L(){return(L=Object(c.a)(regeneratorRuntime.mark(function e(t,n){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.context||(t.context={isStatic:!0,isDev:!1,isHMR:!1,app:t,payload:n.payload,error:n.error,base:"/unide/",env:{}},n.req&&(t.context.req=n.req),n.res&&(t.context.res=n.res),t.context.redirect=function(e,path,n){if(e){t.context._redirected=!0;var r=o(path);if("number"==typeof e||"undefined"!==r&&"object"!==r||(n=path||{},r=o(path=e),e=302),"object"===r&&(path=t.router.resolve(path).href),!/(^[.]{1,2}\/)|(^\/(?!\/))/.test(path))throw path=K(path,n),window.location.replace(path),new Error("ERR_REDIRECT");t.context.next({path:path,query:n,status:e})}},t.context.nuxtState=window.__NUXT__),t.context.next=n.next,t.context._redirected=!1,t.context._errored=!1,t.context.isHMR=!!n.isHMR,!n.route){e.next=9;break}return e.next=8,R(n.route);case 8:t.context.route=e.sent;case 9:if(t.context.params=t.context.route.params||{},t.context.query=t.context.route.query||{},!n.from){e.next=15;break}return e.next=14,R(n.from);case 14:t.context.from=e.sent;case 15:case"end":return e.stop()}},e)}))).apply(this,arguments)}function D(e,t){var n;return(n=2===e.length?new Promise(function(n){e(t,function(e,data){e&&t.error(e),n(data=data||{})})}):e(t))&&(n instanceof Promise||"function"==typeof n.then)||(n=Promise.resolve(n)),n}function M(base,e){var path=window.location.pathname;return"hash"===e?window.location.hash.replace(/^#\//,""):(base&&0===path.indexOf(base)&&(path=path.slice(base.length)),decodeURI(path||"/")+window.location.search+window.location.hash)}function I(e,t){return function(e){for(var t=new Array(e.length),i=0;i<e.length;i++)"object"===o(e[i])&&(t[i]=new RegExp("^(?:"+e[i].pattern+")$"));return function(n,r){for(var path="",data=n||{},o=r||{},c=o.pretty?H:encodeURIComponent,l=0;l<e.length;l++){var f=e[l];if("string"!=typeof f){var h=data[f.name||"pathMatch"],d=void 0;if(null==h){if(f.optional){f.partial&&(path+=f.prefix);continue}throw new TypeError('Expected "'+f.name+'" to be defined')}if(Array.isArray(h)){if(!f.repeat)throw new TypeError('Expected "'+f.name+'" to not repeat, but received `'+JSON.stringify(h)+"`");if(0===h.length){if(f.optional)continue;throw new TypeError('Expected "'+f.name+'" to not be empty')}for(var m=0;m<h.length;m++){if(d=c(h[m]),!t[l].test(d))throw new TypeError('Expected all "'+f.name+'" to match "'+f.pattern+'", but received `'+JSON.stringify(d)+"`");path+=(0===m?f.prefix:f.delimiter)+d}}else{if(d=f.asterisk?encodeURI(h).replace(/[?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}):c(h),!t[l].test(d))throw new TypeError('Expected "'+f.name+'" to match "'+f.pattern+'", but received "'+d+'"');path+=f.prefix+d}}else path+=f}return path}}(function(e,t){var n,r=[],o=0,c=0,path="",l=t&&t.delimiter||"/";for(;null!=(n=z.exec(e));){var f=n[0],h=n[1],d=n.index;if(path+=e.slice(c,d),c=d+f.length,h)path+=h[1];else{var m=e[c],v=n[2],y=n[3],x=n[4],w=n[5],_=n[6],k=n[7];path&&(r.push(path),path="");var C=null!=v&&null!=m&&m!==v,$="+"===_||"*"===_,E="?"===_||"*"===_,j=n[2]||l,pattern=x||w;r.push({name:y||o++,prefix:v||"",delimiter:j,optional:E,repeat:$,partial:C,asterisk:!!k,pattern:pattern?W(pattern):k?".*":"[^"+J(j)+"]+?"})}}c<e.length&&(path+=e.substr(c));path&&r.push(path);return r}(e,t))}function B(e,t){var n={},r=Object($.a)({},e,t);for(var o in r)String(e[o])!==String(t[o])&&(n[o]=!0);return n}function U(e){var t;if(e.message||"string"==typeof e)t=e.message||e;else try{t=JSON.stringify(e,null,2)}catch(n){t="[".concat(e.constructor.name,"]")}return Object($.a)({},e,{message:t,statusCode:e.statusCode||e.status||e.response&&e.response.status||500})}window.onNuxtReadyCbs=[],window.onNuxtReady=function(e){window.onNuxtReadyCbs.push(e)};var z=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function H(e){return encodeURI(e).replace(/[/?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function J(e){return e.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1")}function W(e){return e.replace(/([=!:$/()])/g,"\\$1")}function K(e,t){var n,r=e.indexOf("://");-1!==r?(n=e.substring(0,r),e=e.substring(r+3)):e.startsWith("//")&&(e=e.substring(2));var o,c=e.split("/"),l=(n?n+"://":"//")+c.shift(),path=c.filter(Boolean).join("/");return 2===(c=path.split("#")).length&&(path=c[0],o=c[1]),l+=path?"/"+path:"",t&&"{}"!==JSON.stringify(t)&&(l+=(2===e.split("?").length?"&":"?")+function(e){return Object.keys(e).sort().map(function(t){var n=e[t];return null==n?"":Array.isArray(n)?n.slice().map(function(e){return[t,"=",e].join("")}).join("&"):t+"="+n}).filter(Boolean).join("&")}(t)),l+=o?"#"+o:""}var Q=n(88),Z=n.n(Q),G=n(60),V=function(){return j(Promise.all([n.e(2),n.e(5)]).then(n.bind(null,358)))},X=function(){return j(Promise.all([n.e(2),n.e(6)]).then(n.bind(null,359)))},Y=function(){return j(n.e(7).then(n.bind(null,360)))},ee=function(){return j(n.e(9).then(n.bind(null,361)))},te=function(){return j(n.e(10).then(n.bind(null,362)))},ne=function(){return j(n.e(11).then(n.bind(null,369)))},re=function(){return j(Promise.all([n.e(1),n.e(0),n.e(12)]).then(n.bind(null,363)))},ae=function(){return j(Promise.all([n.e(1),n.e(0),n.e(13)]).then(n.bind(null,364)))},ie=function(){return j(Promise.all([n.e(1),n.e(0),n.e(14)]).then(n.bind(null,365)))},oe=function(){return j(Promise.all([n.e(1),n.e(0),n.e(15)]).then(n.bind(null,366)))},se=function(){return j(Promise.all([n.e(1),n.e(0),n.e(16)]).then(n.bind(null,367)))},ue=function(){return j(Promise.all([n.e(1),n.e(0),n.e(17)]).then(n.bind(null,368)))},ce=function(){return j(n.e(8).then(n.bind(null,370)))};l.a.use(G.a);var le=function(e,t,n){var r=e.hash;return n||(r?{selector:r}:{})};var pe=n(89),fe=n.n(pe),he=Object($.a)({},fe.a,{name:"NoSsr"}),de={name:"NuxtChild",functional:!0,props:{nuxtChildKey:{type:String,default:""},keepAlive:Boolean,keepAliveProps:{type:Object,default:void 0}},render:function(e,t){var n=t.parent,data=t.data,r=t.props;data.nuxtChild=!0;for(var o=n,c=n.$nuxt.nuxt.transitions,l=n.$nuxt.nuxt.defaultTransition,f=0;n;)n.$vnode&&n.$vnode.data.nuxtChild&&f++,n=n.$parent;data.nuxtChildDepth=f;var h=c[f]||l,d={};me.forEach(function(e){void 0!==h[e]&&(d[e]=h[e])});var m={};ge.forEach(function(e){"function"==typeof h[e]&&(m[e]=h[e].bind(o))});var v=m.beforeEnter;m.beforeEnter=function(e){if(window.$nuxt.$nextTick(function(){window.$nuxt.$emit("triggerScroll")}),v)return v.call(o,e)};var y=[e("router-view",data)];return r.keepAlive&&(y=[e("keep-alive",{props:r.keepAliveProps},y)]),e("transition",{props:d,on:m},y)}},me=["name","mode","appear","css","type","duration","enterClass","leaveClass","appearClass","enterActiveClass","enterActiveClass","leaveActiveClass","appearActiveClass","enterToClass","leaveToClass","appearToClass"],ge=["beforeEnter","enter","afterEnter","enterCancelled","beforeLeave","leave","afterLeave","leaveCancelled","beforeAppear","appear","afterAppear","appearCancelled"],ve={name:"NuxtError",props:{error:{type:Object,default:null}},head:function(){return{title:this.message,meta:[{name:"viewport",content:"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"}]}},computed:{statusCode:function(){return this.error&&this.error.statusCode||500},message:function(){return this.error.message||"Error"}}},ye=(n(134),n(2)),be=Object(ye.a)(ve,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"__nuxt-error-page"},[n("div",{staticClass:"error"},[n("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"90",height:"90",fill:"#DBE1EC",viewBox:"0 0 48 48"}},[n("path",{attrs:{d:"M22 30h4v4h-4zm0-16h4v12h-4zm1.99-10C12.94 4 4 12.95 4 24s8.94 20 19.99 20S44 35.05 44 24 35.04 4 23.99 4zM24 40c-8.84 0-16-7.16-16-16S15.16 8 24 8s16 7.16 16 16-7.16 16-16 16z"}})]),e._v(" "),n("div",{staticClass:"title"},[e._v(e._s(e.message))]),e._v(" "),404===e.statusCode?n("p",{staticClass:"description"},[n("NuxtLink",{staticClass:"error-link",attrs:{to:"/"}},[e._v("Back to the home page")])],1):e._e(),e._v(" "),e._m(0)])])},[function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"logo"},[t("a",{attrs:{href:"https://nuxtjs.org",target:"_blank",rel:"noopener"}},[this._v("Nuxt.js")])])}],!1,null,null,null).exports,xe={name:"Nuxt",components:{NuxtChild:de,NuxtError:be},props:{nuxtChildKey:{type:String,default:void 0},keepAlive:Boolean,keepAliveProps:{type:Object,default:void 0},name:{type:String,default:"default"}},computed:{routerViewKey:function(){if(void 0!==this.nuxtChildKey||this.$route.matched.length>1)return this.nuxtChildKey||I(this.$route.matched[0].path)(this.$route.params);var e=this.$route.matched[0]&&this.$route.matched[0].components.default;return e&&e.options&&e.options.key?"function"==typeof e.options.key?e.options.key(this.$route):e.options.key:this.$route.path}},beforeCreate:function(){l.a.util.defineReactive(this,"nuxt",this.$root.$options.nuxt)},render:function(e){return this.nuxt.err?e("NuxtError",{props:{error:this.nuxt.err}}):e("NuxtChild",{key:this.routerViewKey,props:this.$props})}},we={name:"NuxtLoading",data:function(){return{percent:0,show:!1,canSucceed:!0,reversed:!1,skipTimerCount:0,rtl:!1,throttle:200,duration:5e3,continuous:!1}},computed:{left:function(){return!(!this.continuous&&!this.rtl)&&(this.rtl?this.reversed?"0px":"auto":this.reversed?"auto":"0px")}},beforeDestroy:function(){this.clear()},methods:{clear:function(){clearInterval(this._timer),clearTimeout(this._throttle),this._timer=null},start:function(){var e=this;return this.clear(),this.percent=0,this.reversed=!1,this.skipTimerCount=0,this.canSucceed=!0,this.throttle?this._throttle=setTimeout(function(){return e.startTimer()},this.throttle):this.startTimer(),this},set:function(e){return this.show=!0,this.canSucceed=!0,this.percent=Math.min(100,Math.max(0,Math.floor(e))),this},get:function(){return this.percent},increase:function(e){return this.percent=Math.min(100,Math.floor(this.percent+e)),this},decrease:function(e){return this.percent=Math.max(0,Math.floor(this.percent-e)),this},pause:function(){return clearInterval(this._timer),this},resume:function(){return this.startTimer(),this},finish:function(){return this.percent=this.reversed?0:100,this.hide(),this},hide:function(){var e=this;return this.clear(),setTimeout(function(){e.show=!1,e.$nextTick(function(){e.percent=0,e.reversed=!1})},500),this},fail:function(){return this.canSucceed=!1,this},startTimer:function(){var e=this;this.show||(this.show=!0),void 0===this._cut&&(this._cut=1e4/Math.floor(this.duration)),this._timer=setInterval(function(){e.skipTimerCount>0?e.skipTimerCount--:(e.reversed?e.decrease(e._cut):e.increase(e._cut),e.continuous&&(e.percent>=100?(e.skipTimerCount=1,e.reversed=!e.reversed):e.percent<=0&&(e.skipTimerCount=1,e.reversed=!e.reversed)))},100)}},render:function(e){var t=e(!1);return this.show&&(t=e("div",{staticClass:"nuxt-progress",class:{"nuxt-progress-notransition":this.skipTimerCount>0,"nuxt-progress-failed":!this.canSucceed},style:{width:this.percent+"%",left:this.left}})),t}},_e=(n(135),Object(ye.a)(we,void 0,void 0,!1,null,null,null).exports),ke=(n(136),n(137),Object(ye.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("footer",{staticClass:"footer"},[n("div",{staticClass:"container"},[n("div",{staticClass:"columns is-mobile is-multiline is-centered"},[n("div",{staticClass:"column is-narrow"},[n("a",{attrs:{href:"http://www.eclipse.org"}},[e._v("Eclipse Foundation")])]),e._v(" "),n("div",{staticClass:"column is-narrow"},[n("a",{attrs:{href:"http://www.eclipse.org/legal/privacy.php"}},[e._v("Privacy Policy")])]),e._v(" "),n("div",{staticClass:"column is-narrow"},[n("a",{attrs:{href:"http://www.eclipse.org/legal/termsofuse.php"}},[e._v("Terms of Use")])]),e._v(" "),n("div",{staticClass:"column is-narrow"},[n("a",{attrs:{href:"http://www.eclipse.org/legal/copyright.php"}},[e._v("Copyright Agent")])]),e._v(" "),n("div",{staticClass:"column is-narrow"},[n("a",{attrs:{href:"https://eclipse.org/security/ "}},[e._v("Security reports")])]),e._v(" "),n("div",{staticClass:"column is-narrow"},[n("a",{attrs:{href:"http://www.eclipse.org/legal/"}},[e._v("Legal")])])])])])}],!1,null,null,null).exports),Ce=n(40).a,$e=(n(138),Object(ye.a)(Ce,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("header",{staticClass:"nav-header"},[n("div",{staticClass:"container"},[n("nav",{staticClass:"navbar"},[n("div",{staticClass:"navbar-menu",class:{"is-active":e.isMenuActive},attrs:{id:"navMenu"},on:{click:function(t){e.isMenuActive=!1}}},[n("div",{staticClass:"navbar-start"},[e._t("default")],2)]),e._v(" "),n("div",{staticClass:"navbar-brand"},[n("div",{staticClass:"navbar-burger burger",class:{"is-active":e.isMenuActive},on:{click:function(t){e.isMenuActive=!e.isMenuActive}}},[n("span"),e._v(" "),n("span"),e._v(" "),n("span")]),e._v(" "),n("nuxt-link",{staticClass:"navbar-item",attrs:{to:"/"}},[n("img",{attrs:{src:"logo.svg",alt:e.brand}})])],1)])])])},[],!1,null,null,null).exports),Ee={components:{eclipseFooter:ke,navbar:$e}},je=Object(ye.a)(Ee,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("navbar",[n("nuxt-link",{staticClass:"navbar-item",attrs:{exact:"","active-class":"is-active",to:"/"}},[e._v("\n      Home\n    ")]),e._v(" "),n("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/proposal"}},[e._v("\n      Proposal\n    ")]),e._v(" "),n("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/specification"}},[e._v("\n      Specification\n    ")]),e._v(" "),n("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/blog"}},[e._v("\n      Blog Archives\n    ")]),e._v(" "),n("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/faq"}},[e._v("\n      FAQ\n    ")])],1),e._v(" "),n("div",{staticClass:"container"},[n("div",{staticClass:"header clearfix"}),e._v(" "),n("nuxt")],1),e._v(" "),n("eclipseFooter")],1)},[],!1,null,null,null).exports,Ae=n(90),Oe={data:function(){return{posts:Ae.slice().reverse()}},components:{}},Se=(n(139),Object(ye.a)(Oe,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"recentPosts"},[n("h4",{staticClass:"subtitle is-5"},[e._v("\n    Recent Posts\n  ")]),e._v(" "),n("ul",e._l(e.posts,function(t){return n("li",{key:t.url},[n("nuxt-link",{attrs:{to:t.url}},[e._v("\n        "+e._s(t.title)+"\n      ")])],1)}),0)])},[],!1,null,null,null).exports),Pe=n(91),Te=(navigator.languages&&navigator.languages[0]||navigator.language||navigator.userLanguage).toLowerCase().split(/[_-]+/)[0],Re={data:function(){return{posts:Pe.slice().reverse()}},filters:{timeStamp:function(e){var t=e.year,n=e.month,r=new Date(Date.UTC(t,n||0,1));return Intl.DateTimeFormat(Te,{month:"long",year:"numeric"}).format(r)}}},Ne=(n(140),{components:{eclipseFooter:ke,blogArchives:Object(ye.a)(Re,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"blogArchives"},[n("h4",{staticClass:"subtitle is-5"},[e._v("\n    Blog Archives\n  ")]),e._v(" "),n("ul",e._l(e.posts,function(t){return n("li",{key:t.url},[n("nuxt-link",{attrs:{to:t.url}},[e._v("\n        "+e._s(e._f("timeStamp")(t))+"\n      ")]),e._v("\n      ("+e._s(t.count)+")\n    ")],1)}),0)])},[],!1,null,null,null).exports,navbar:$e,recentPosts:Se}}),Fe=(n(141),{_default:je,_sidebar:Object(ye.a)(Ne,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("navbar",[n("nuxt-link",{staticClass:"navbar-item",attrs:{exact:"","active-class":"is-active",to:"/"}},[e._v("\n      Home\n    ")]),e._v(" "),n("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/proposal"}},[e._v("\n      Proposal\n    ")]),e._v(" "),n("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/specification"}},[e._v("\n      Specification\n    ")]),e._v(" "),n("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/blog"}},[e._v("\n      Blog Archives\n    ")]),e._v(" "),n("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/faq"}},[e._v("\n      FAQ\n    ")])],1),e._v(" "),n("div",{staticClass:"container"},[n("div",{staticClass:"header clearfix"}),e._v(" "),n("div",{staticClass:"columns"},[n("nuxt",{staticClass:"column is-8"}),e._v(" "),n("div",{staticClass:"sidebar column is-3 is-offset-1"},[n("recentPosts"),e._v(" "),n("blogArchives")],1)],1)]),e._v(" "),n("eclipseFooter")],1)},[],!1,null,null,null).exports}),Le={head:{title:"Welcome",titleTemplate:"Eclipse unide - %s",meta:[{charset:"utf-8"},{name:"viewport",content:"width=device-width, initial-scale=1"},{hid:"description",name:"description",content:"Eclipse Unide: Understand Industry devices"}],link:[{rel:"icon",type:"image/x-icon",href:"/unide/favicon.ico"}],style:[],script:[]},render:function(e,t){var n=e("NuxtLoading",{ref:"loading"}),r=e(this.layout||"nuxt"),o=e("div",{domProps:{id:"__layout"},key:this.layoutName},[r]),c=e("transition",{props:{name:"layout",mode:"out-in"},on:{beforeEnter:function(e){window.$nuxt.$nextTick(function(){window.$nuxt.$emit("triggerScroll")})}}},[o]);return e("div",{domProps:{id:"__nuxt"}},[n,c])},data:function(){return{isOnline:!0,layout:null,layoutName:""}},beforeCreate:function(){l.a.util.defineReactive(this,"nuxt",this.$options.nuxt)},created:function(){l.a.prototype.$nuxt=this,window.$nuxt=this,this.refreshOnlineStatus(),window.addEventListener("online",this.refreshOnlineStatus),window.addEventListener("offline",this.refreshOnlineStatus),this.error=this.nuxt.error},mounted:function(){this.$loading=this.$refs.loading},watch:{"nuxt.err":"errorChanged"},computed:{isOffline:function(){return!this.isOnline}},methods:{refreshOnlineStatus:function(){void 0===window.navigator.onLine?this.isOnline=!0:this.isOnline=window.navigator.onLine},errorChanged:function(){this.nuxt.err&&this.$loading&&(this.$loading.fail&&this.$loading.fail(),this.$loading.finish&&this.$loading.finish())},setLayout:function(e){return e&&Fe["_"+e]||(e="default"),this.layoutName=e,this.layout=Fe["_"+e],this.layout},loadLayout:function(e){return e&&Fe["_"+e]||(e="default"),Promise.resolve(Fe["_"+e])}},components:{NuxtLoading:_e}};n(142),n(143);l.a.component(he.name,he),l.a.component(de.name,de),l.a.component("NChild",de),l.a.component(xe.name,xe),l.a.use(Z.a,{keyName:"head",attribute:"data-n-head",ssrAttribute:"data-n-head-ssr",tagIDKeyName:"hid"});var De={name:"page",mode:"out-in",appear:!1,appearClass:"appear",appearActiveClass:"appear-active",appearToClass:"appear-to"};function Me(){return(Me=Object(c.a)(regeneratorRuntime.mark(function e(t){var n,r,o,c,path;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,new G.a({mode:"history",base:"/unide/",linkActiveClass:"nuxt-link-active",linkExactActiveClass:"nuxt-link-exact-active",scrollBehavior:le,routes:[{path:"/article",component:V,name:"article"},{path:"/blog",component:X,name:"blog"},{path:"/faq",component:Y,name:"faq"},{path:"/proposal",component:ee,name:"proposal"},{path:"/specification",component:te,children:[{path:"",component:ne,name:"specification"},{path:"v2/machine-message",component:re,name:"specification-v2-machine-message"},{path:"v2/measurement-message",component:ae,name:"specification-v2-measurement-message"},{path:"v2/process-message",component:ie,name:"specification-v2-process-message"},{path:"v3/machine-message",component:oe,name:"specification-v3-machine-message"},{path:"v3/measurement-message",component:se,name:"specification-v3-measurement-message"},{path:"v3/process-message",component:ue,name:"specification-v3-process-message"}]},{path:"/",component:ce,name:"index"},{path:"/specification/machine-message",redirect:"/specification/v3/machine-message"},{path:"/specification/measurement-message",redirect:"/specification/v3/measurement-message"},{path:"/specification/process-message",redirect:"/specification/v3/process-message"},{path:"/blog/:year/:month/:day/:name",component:V,name:"article"},{path:"/blog/:year?/:month?/:day?",component:X,name:"blog"}],fallback:!1});case 2:return n=e.sent,r=Object($.a)({router:n,nuxt:{defaultTransition:De,transitions:[De],setTransitions:function(e){return Array.isArray(e)||(e=[e]),e=e.map(function(e){return e=e?"string"==typeof e?Object.assign({},De,{name:e}):Object.assign({},De,e):De}),this.$options.nuxt.transitions=e,e},err:null,dateErr:null,error:function(e){e=e||null,r.context._errored=!!e,e=e?U(e):null;var n=this.nuxt||this.$options.nuxt;return n.dateErr=Date.now(),n.err=e,t&&(t.nuxt.error=e),e}}},Le),o=t?t.next:function(e){return r.router.push(e)},t?c=n.resolve(t.url).route:(path=M(n.options.base),c=n.resolve(path).route),e.next=8,F(r,{route:c,next:o,error:r.nuxt.error.bind(r),payload:t?t.payload:void 0,req:t?t.req:void 0,res:t?t.res:void 0,beforeRenderFns:t?t.beforeRenderFns:void 0});case 8:(function(e,t){if(!e)throw new Error("inject(key, value) has no key provided");if(void 0===t)throw new Error("inject(key, value) has no value provided");r[e="$"+e]=t;var n="__nuxt_"+e+"_installed__";l.a[n]||(l.a[n]=!0,l.a.use(function(){l.a.prototype.hasOwnProperty(e)||Object.defineProperty(l.a.prototype,e,{get:function(){return this.$root.$options[e]}})}))}),e.next=12;break;case 12:e.next=15;break;case 15:return e.abrupt("return",{app:r,router:n});case 16:case"end":return e.stop()}},e)}))).apply(this,arguments)}var qe=window.requestIdleCallback||function(e){var t=Date.now();return setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)},Ie=window.IntersectionObserver&&new window.IntersectionObserver(function(e){e.forEach(function(e){var t=e.intersectionRatio,link=e.target;t<=0||link.__prefetch()})}),Be={name:"NuxtLink",extends:l.a.component("RouterLink"),props:{noPrefetch:{type:Boolean,default:!1}},mounted:function(){this.noPrefetch||qe(this.observe,{timeout:2e3})},beforeDestroy:function(){this.__observed&&(Ie.unobserve(this.$el),delete this.$el.__prefetch)},methods:{observe:function(){Ie&&this.shouldPrefetch()&&(this.$el.__prefetch=this.prefetch.bind(this),Ie.observe(this.$el),this.__observed=!0)},shouldPrefetch:function(){return this.getPrefetchComponents().length>0},canPrefetch:function(){var e=navigator.connection;return!(this.$nuxt.isOffline||e&&((e.effectiveType||"").includes("2g")||e.saveData))},getPrefetchComponents:function(){return this.$router.resolve(this.to,this.$route,this.append).resolved.matched.map(function(e){return e.components.default}).filter(function(e){return"function"==typeof e&&!e.options&&!e.__prefetched})},prefetch:function(){if(this.canPrefetch()){Ie.unobserve(this.$el);var e=this.getPrefetchComponents(),t=!0,n=!1,r=void 0;try{for(var o,c=e[Symbol.iterator]();!(t=(o=c.next()).done);t=!0){var l=o.value;try{l(),l.__prefetched=!0}catch(e){}}}catch(e){n=!0,r=e}finally{try{t||null==c.return||c.return()}finally{if(n)throw r}}}}}};l.a.component(Be.name,Be),l.a.component("NLink",Be);var Ue,ze,He=[],Je=window.__NUXT__||{};Object.assign(l.a.config,{silent:!0,performance:!1});var We=l.a.config.errorHandler||console.error;function Ke(e,t,n){var r=function(component){var e=function(component,e){if(!component||!component.options||!component.options[e])return{};var option=component.options[e];if("function"==typeof option){for(var t=arguments.length,n=new Array(t>2?t-2:0),r=2;r<t;r++)n[r-2]=arguments[r];return option.apply(void 0,n)}return option}(component,"transition",t,n)||{};return"string"==typeof e?{name:e}:e};return e.map(function(e){var t=Object.assign({},r(e));if(n&&n.matched.length&&n.matched[0].components.default){var o=r(n.matched[0].components.default);Object.keys(o).filter(function(e){return o[e]&&e.toLowerCase().includes("leave")}).forEach(function(e){t[e]=o[e]})}return t})}function Qe(e,t,n){return Ze.apply(this,arguments)}function Ze(){return(Ze=Object(c.a)(regeneratorRuntime.mark(function e(t,n,r){var o,c,l,f,h=this;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this._pathChanged=!!Ue.nuxt.err||n.path!==t.path,this._queryChanged=JSON.stringify(t.query)!==JSON.stringify(n.query),this._diffQuery=this._queryChanged?B(t.query,n.query):[],this._pathChanged&&this.$loading.start&&!this.$loading.manual&&this.$loading.start(),e.prev=4,e.next=7,T(t);case 7:o=e.sent,!this._pathChanged&&this._queryChanged&&o.some(function(e){var t=e.options.watchQuery;return!0===t||!!Array.isArray(t)&&t.some(function(e){return h._diffQuery[e]})})&&this.$loading.start&&!this.$loading.manual&&this.$loading.start(),r(),e.next=23;break;case 12:if(e.prev=12,e.t0=e.catch(4),c=e.t0||{},l=c.statusCode||c.status||c.response&&c.response.status||500,f=c.message||"",!/^Loading chunk (\d)+ failed\./.test(f)){e.next=20;break}return window.location.reload(!0),e.abrupt("return");case 20:this.error({statusCode:l,message:f}),this.$nuxt.$emit("routeChanged",t,n,c),r();case 23:case"end":return e.stop()}},e,this,[[4,12]])}))).apply(this,arguments)}function Ge(e,t){return Je.serverRendered&&t&&A(e,t),e._Ctor=e,e}function Ve(e,t,n){var r=this,o=[],c=!1;if(void 0!==n&&(o=[],(n=O(n)).options.middleware&&(o=o.concat(n.options.middleware)),e.forEach(function(e){e.options.middleware&&(o=o.concat(e.options.middleware))})),o=o.map(function(e){return"function"==typeof e?e:("function"!=typeof C[e]&&(c=!0,r.error({statusCode:500,message:"Unknown middleware "+e})),C[e])}),!c)return function e(t,n){return!t.length||n._redirected||n._errored?Promise.resolve():D(t[0],n).then(function(){return e(t.slice(1),n)})}(o,t)}function Xe(e,t,n){return Ye.apply(this,arguments)}function Ye(){return(Ye=Object(c.a)(regeneratorRuntime.mark(function e(t,n,r){var o,c,l,f,h,d,m,v,y,x,w,_,k,C,$,j,O=this;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!1!==this._pathChanged||!1!==this._queryChanged){e.next=2;break}return e.abrupt("return",r());case 2:return He=t===n?[]:S(n,o=[]).map(function(e,i){return I(n.matched[o[i]].path)(n.params)}),c=!1,l=function(path){n.path===path.path&&O.$loading.finish&&O.$loading.finish(),n.path!==path.path&&O.$loading.pause&&O.$loading.pause(),c||(c=!0,r(path))},e.next=7,F(Ue,{route:t,from:n,next:l.bind(this)});case 7:if(this._dateLastError=Ue.nuxt.dateErr,this._hadError=!!Ue.nuxt.err,(h=S(t,f=[])).length){e.next=25;break}return e.next=14,Ve.call(this,h,Ue.context);case 14:if(!c){e.next=16;break}return e.abrupt("return");case 16:return e.next=18,this.loadLayout("function"==typeof be.layout?be.layout(Ue.context):be.layout);case 18:return d=e.sent,e.next=21,Ve.call(this,h,Ue.context,d);case 21:if(!c){e.next=23;break}return e.abrupt("return");case 23:return Ue.context.error({statusCode:404,message:"This page could not be found"}),e.abrupt("return",r());case 25:return h.forEach(function(e){e._Ctor&&e._Ctor.options&&(e.options.asyncData=e._Ctor.options.asyncData,e.options.fetch=e._Ctor.options.fetch)}),this.setTransitions(Ke(h,t,n)),e.prev=27,e.next=30,Ve.call(this,h,Ue.context);case 30:if(!c){e.next=32;break}return e.abrupt("return");case 32:if(!Ue.context._errored){e.next=34;break}return e.abrupt("return",r());case 34:return"function"==typeof(m=h[0].options.layout)&&(m=m(Ue.context)),e.next=38,this.loadLayout(m);case 38:return m=e.sent,e.next=41,Ve.call(this,h,Ue.context,m);case 41:if(!c){e.next=43;break}return e.abrupt("return");case 43:if(!Ue.context._errored){e.next=45;break}return e.abrupt("return",r());case 45:v=!0,e.prev=46,y=!0,x=!1,w=void 0,e.prev=50,_=h[Symbol.iterator]();case 52:if(y=(k=_.next()).done){e.next=64;break}if("function"==typeof(C=k.value).options.validate){e.next=56;break}return e.abrupt("continue",61);case 56:return e.next=58,C.options.validate(Ue.context);case 58:if(v=e.sent){e.next=61;break}return e.abrupt("break",64);case 61:y=!0,e.next=52;break;case 64:e.next=70;break;case 66:e.prev=66,e.t0=e.catch(50),x=!0,w=e.t0;case 70:e.prev=70,e.prev=71,y||null==_.return||_.return();case 73:if(e.prev=73,!x){e.next=76;break}throw w;case 76:return e.finish(73);case 77:return e.finish(70);case 78:e.next=84;break;case 80:return e.prev=80,e.t1=e.catch(46),this.error({statusCode:e.t1.statusCode||"500",message:e.t1.message}),e.abrupt("return",r());case 84:if(v){e.next=87;break}return this.error({statusCode:404,message:"This page could not be found"}),e.abrupt("return",r());case 87:return e.next=89,Promise.all(h.map(function(e,i){if(e._path=I(t.matched[f[i]].path)(t.params),e._dataRefresh=!1,O._pathChanged&&O._queryChanged||e._path!==He[i])e._dataRefresh=!0;else if(!O._pathChanged&&O._queryChanged){var n=e.options.watchQuery;!0===n?e._dataRefresh=!0:Array.isArray(n)&&(e._dataRefresh=n.some(function(e){return O._diffQuery[e]}))}if(!O._hadError&&O._isMounted&&!e._dataRefresh)return Promise.resolve();var r=[],o=e.options.asyncData&&"function"==typeof e.options.asyncData,c=!!e.options.fetch,l=o&&c?30:45;if(o){var h=D(e.options.asyncData,Ue.context).then(function(t){A(e,t),O.$loading.increase&&O.$loading.increase(l)});r.push(h)}if(O.$loading.manual=!1===e.options.loading,c){var p=e.options.fetch(Ue.context);p&&(p instanceof Promise||"function"==typeof p.then)||(p=Promise.resolve(p)),p.then(function(e){O.$loading.increase&&O.$loading.increase(l)}),r.push(p)}return Promise.all(r)}));case 89:c||(this.$loading.finish&&!this.$loading.manual&&this.$loading.finish(),r()),e.next=106;break;case 92:if(e.prev=92,e.t2=e.catch(27),"ERR_REDIRECT"!==($=e.t2||{}).message){e.next=97;break}return e.abrupt("return",this.$nuxt.$emit("routeChanged",t,n,$));case 97:return He=[],E($),"function"==typeof(j=be.layout)&&(j=j(Ue.context)),e.next=103,this.loadLayout(j);case 103:this.error($),this.$nuxt.$emit("routeChanged",t,n,$),r();case 106:case"end":return e.stop()}},e,this,[[27,92],[46,80],[50,66,70,78],[71,,73,77]])}))).apply(this,arguments)}function et(e,t){P(e,function(e,t,n,r){return"object"!==o(e)||e.options||((e=l.a.extend(e))._Ctor=e,n.components[r]=e),e})}function tt(e){this._hadError&&this._dateLastError===this.$options.nuxt.dateErr&&this.error();var t=this.$options.nuxt.err?be.layout:e.matched[0].components.default.options.layout;"function"==typeof t&&(t=t(Ue.context)),this.setLayout(t)}function nt(e,t){var n=this;!1===this._pathChanged&&!1===this._queryChanged||l.a.nextTick(function(){var t=[],r=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return Array.prototype.concat.apply([],e.matched.map(function(e,n){return Object.keys(e.instances).map(function(r){return t&&t.push(n),e.instances[r]})}))}(e,t),o=S(e,t);r.forEach(function(e,i){if(e&&e.constructor._dataRefresh&&o[i]===e.constructor&&"function"==typeof e.constructor.options.data){var t=e.constructor.options.data.call(e);for(var n in t)l.a.set(e.$data,n,t[n])}}),tt.call(n,e)})}function at(e){window.onNuxtReadyCbs.forEach(function(t){"function"==typeof t&&t(e)}),"function"==typeof window._onNuxtLoaded&&window._onNuxtLoaded(e),ze.afterEach(function(t,n){l.a.nextTick(function(){return e.$nuxt.$emit("routeChanged",t,n)})})}function it(){return(it=Object(c.a)(regeneratorRuntime.mark(function e(t){var n,r,o,f;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return Ue=t.app,ze=t.router,e.next=4,Promise.all((path=void 0,path=M((h=ze).options.base,h.options.mode),P(h.match(path),function(){var e=Object(c.a)(regeneratorRuntime.mark(function e(t,n,r,o,c){var l;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("function"!=typeof t||t.options){e.next=4;break}return e.next=3,t();case 3:t=e.sent;case 4:return l=Ge(O(t),Je.data?Je.data[c]:null),r.components[o]=l,e.abrupt("return",l);case 7:case"end":return e.stop()}},e)}));return function(t,n,r,o,c){return e.apply(this,arguments)}}())));case 4:return n=e.sent,r=new l.a(Ue),o=Je.layout||"default",e.next=9,r.loadLayout(o);case 9:if(r.setLayout(o),f=function(){r.$mount("#__nuxt"),l.a.nextTick(function(){at(r)})},r.setTransitions=r.$options.nuxt.setTransitions.bind(r),n.length&&(r.setTransitions(Ke(n,ze.currentRoute)),He=ze.currentRoute.matched.map(function(e){return I(e.path)(ze.currentRoute.params)})),r.$loading={},Je.error&&r.error(Je.error),ze.beforeEach(Qe.bind(r)),ze.beforeEach(Xe.bind(r)),ze.afterEach(et),ze.afterEach(nt.bind(r)),!Je.serverRendered){e.next=22;break}return f(),e.abrupt("return");case 22:Xe.call(r,ze.currentRoute,ze.currentRoute,function(path){if(!path)return et(ze.currentRoute,ze.currentRoute),tt.call(r,ze.currentRoute),void f();ze.push(path,function(){return f()},function(e){if(!e)return f();We(e)})});case 23:case"end":return e.stop()}var h,path},e)}))).apply(this,arguments)}(function(e){return Me.apply(this,arguments)})().then(function(e){return it.apply(this,arguments)}).catch(function(e){e.message="[nuxt] Error while mounting app: "+e.message,We(e)})},37:function(e,t,n){},38:function(e,t,n){},39:function(e,t,n){},40:function(e,t,n){"use strict";(function(e){t.a={data:function(){return{brand:e.env.BRAND,isMenuActive:!1}},components:{}}}).call(this,n(65))},41:function(e,t,n){},42:function(e,t,n){},43:function(e,t,n){},44:function(e,t,n){},5:function(e,t,n){"use strict";function r(e,t,n,r,o,c,l){try{var f=e[c](l),h=f.value}catch(e){return void n(e)}f.done?t(h):Promise.resolve(h).then(r,o)}function o(e){return function(){var t=this,n=arguments;return new Promise(function(o,c){var l=e.apply(t,n);function f(e){r(l,o,c,f,h,"next",e)}function h(e){r(l,o,c,f,h,"throw",e)}f(void 0)})}}n.d(t,"a",function(){return o})},89:function(e,t,n){"use strict";var r={name:"NoSsr",functional:!0,props:{placeholder:String,placeholderTag:{type:String,default:"div"}},render:function(e,t){var n=t.parent,r=t.slots,o=t.props,c=r(),l=c.default;void 0===l&&(l=[]);var f=c.placeholder;return n._isMounted?l:(n.$once("hook:mounted",function(){n.$forceUpdate()}),o.placeholderTag&&(o.placeholder||f)?e(o.placeholderTag,{class:["no-ssr-placeholder"]},o.placeholder||f):l.length>0?l.map(function(){return e(!1)}):e(!1))}};e.exports=r},90:function(e){e.exports=[{url:"/blog/2018/2/13/grinding-machine-scenario",title:"Use Cases: Unide and the Eclipse Testbed",date:"2018-02-13T00:00:00.000Z"},{url:"/blog/2018/3/26/Release-0.2.0",title:"Unide 0.2.0 released",date:"2018-03-26T10:39:00.000Z"},{url:"/blog/2018/9/4/Template-for-PPMP-transformation",title:"Use Cases: Template for transformation",date:"2018-09-04T00:00:00.000Z"},{url:"/blog/2019/3/1/Version-3",title:"Protocol Version 3 release candidate",date:"2019-03-01T00:00:00.000Z"},{url:"/blog/2019/11/26/Version-3-final",title:"Protocol v3 final",date:"2019-11-26T00:00:00.000Z"}]},91:function(e){e.exports=[{year:"2016",month:"9",url:"/blog/2016/9",count:4},{year:"2017",month:"3",url:"/blog/2017/3",count:1},{year:"2017",month:"6",url:"/blog/2017/6",count:2},{year:"2017",month:"10",url:"/blog/2017/10",count:2},{year:"2018",month:"1",url:"/blog/2018/1",count:1},{year:"2018",month:"2",url:"/blog/2018/2",count:2},{year:"2018",month:"3",url:"/blog/2018/3",count:1},{year:"2018",month:"9",url:"/blog/2018/9",count:1},{year:"2019",month:"3",url:"/blog/2019/3",count:1},{year:"2019",month:"11",url:"/blog/2019/11",count:1}]},92:function(e,t,n){e.exports=n(144)}},[[92,18,4]]]);
\ No newline at end of file
diff --git a/files/7e5b30c8046b1e015c6b.js b/files/7e5b30c8046b1e015c6b.js
deleted file mode 100644
index d5a9313..0000000
--- a/files/7e5b30c8046b1e015c6b.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{149:function(e,t,n){"use strict";var o={props:{collapsed:{type:Boolean,default:!1}},data:function(){return{expanded:!this.collapsed,transitioning:!1}},watch:{collapsed:function(e){this.expanded=!e}},methods:{beforeenter:function(e){this.transitioning=!0,e.style.height=0},enter:function(e){e.style.height=e.scrollHeight+"px"},afterenter:function(e){e.style.height="",this.transitioning=!1},beforeleave:function(e){this.transitioning=!0,e.style.height=e.offsetHeight+"px",e.offsetHeight},leave:function(e){e.style.height=0,e.offsetHeight},afterleave:function(e){this.transitioning=!1},toggle:function(){this.transitioning||(this.expanded=!this.expanded,this.$emit(this.expanded?"expanding":"collapsing",this.id))}}},r=(n(172),n(2)),component=Object(r.a)(o,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"card collapsibleCard",class:{collapsed:!e.expanded}},[e.$slots.header?n("header",{staticClass:"card-header",on:{click:function(t){return t.preventDefault(),e.toggle()}}},[n("p",{staticClass:"card-header-title"},[!e.$slots.headerCollapsed||e.expanded?e._t("header"):e._t("headerCollapsed")],2),e._v(" "),n("a",{staticClass:"card-header-icon"},[n("span",{staticClass:"icon"},[n("i",{staticClass:"fa",class:{"fa-angle-down":e.expanded,"fa-angle-up":!e.expanded}})])])]):e._e(),e._v(" "),n("transition",{attrs:{name:"rollup","leave-active-class":"collapsing","enter-active-class":"collapsing"},on:{"before-leave":e.beforeleave,leave:e.leave,"after-leave":e.afterleave,"before-enter":e.beforeenter,enter:e.enter,"after-enter":e.afterenter}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.expanded,expression:"expanded"}]},[n("div",{staticClass:"card-content"},[e._t("default")],2)])])],1)},[],!1,null,null,null);t.a=component.exports},154:function(e,t,n){},172:function(e,t,n){"use strict";var o=n(154);n.n(o).a},173:function(e,t,n){},250:function(e,t,n){"use strict";var o=n(173);n.n(o).a},365:function(e,t,n){"use strict";n.r(t);var o={layout:"sidebar",head:function(){return{title:"Frequently asked questions"}},data:function(){return{faqs:[{question:'What does "Unide" stand for?',answer:"The projects name is derived from understand industry devices. Other ideas like connect industry machines turned out to have meanings in foreign languages or being trademarked already.<br/>Regarding the logo: Unide and PPMP's goal is to enable you to connect machines and receive their measurements / alerts. The logo represents that. It has you ('<i>U</i>') highlighted and connects to rings. As a side note, we found that the words almost look like <i>you-nice</i>."},{question:"What's the difference between Unide and PPMP?",answer:'The Production Performance Mangement Protocol (PPMP) is the name of the structure of the <a href="specification/">payload</a> whereas Unide is the project that aims to provide sample implementations and further development of this protocol in and with the Eclipse Open Source community. Nevertheless, PPMP is an open suggestion, and everyone is welcome to using it, even without contributing to the Unide project.'},{question:"Why introducing another industry protocol?",answer:"There are already plenty of transport protocols (REST, AMQP, etc.) available. PPMP aims to provide the very industry specific semantic structure for their payload. So it aims to complete such IoT transport infrastructure and bridge the gap to the manufacturing domain. OPC-DA/UA on the other hand covers full service oriented architecture, security concerns and information model, which makes it more complex and costly to implement and operate. In some use cases, this is not necessary."},{question:"Why have you choosen JSON as syntax?",answer:"JSON is a good fit regarding understandability and size. Having a structured and comprehensible basis is the first step for acceptance in the industry. In the spirit of Donald E. Knuth (\"<a href='http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.103.6084'><i>premature optimization is the root of all evil</i></a>\"), further compacting is possible in a later stage."},{question:"Why are time and measurement points separated in multiple arrays?",answer:"We have discussed multiple options for <a href='specification'>series</a>: having an array of<br/>tupels (<code>[[0, 23.34],[...],...]</code>),<br/>plain objects (<code>[{time: 0, temperature: 23.34}, {...}...]</code>),<br/>objects with time as key (<code>{ \"0\": [23.34,...],...}</code>) and other.<br/>When parsing, we had to recognize, that unsigned long int for time and floating point measurements are of different types. Also, all former variants are more verbose due to additional brackets, commas or quotation marks. We believe that the current version is a good compromise between readability and structure."},{question:"I'm interested in Unide/PPMP. How can I contribute?",answer:'The first goal of Unide is to provide sample client/server implementations of PPMP. Secondly, we\'re looking forward to improving PPMP in future versions together with the eclipse community.<br/>If you want to contribute with source code, use cases or implementing it in your devices, let us know and discuss in the <a href="https://github.com/eclipse/unide">unide forum</a> or by forking / filing an issue on <a href="https://github.com/eclipse/unide">github</a>.'},{question:"Why have you included content-spec uri, if that can also be expressed in the a REST url already?",answer:'<a href="specification">content-spec</a> is included in the payload, because PPMP does not rely on a specific transport protocol (like REST).'}]}},components:{card:n(149).a}},r=(n(250),n(2)),component=Object(r.a)(o,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"faq"},[n("h1",{staticClass:"title is-3"},[e._v("\n    Frequently Asked Questions\n  ")]),e._v(" "),e._m(0),e._v(" "),n("div",{staticClass:"accordion"},e._l(e.faqs,function(t,o){return n("card",{key:o,attrs:{collapsed:!0}},[n("template",{slot:"header"},[e._v("\n        "+e._s(t.question)+"\n      ")]),e._v(" "),n("div",{domProps:{innerHTML:e._s(t.answer)}})],2)}),1)])},[function(){var e=this.$createElement,t=this._self._c||e;return t("div",[this._v("\n    We assembled a few frequently asked questions about the Production Performance Protocol (PPMP) and the Unide project. You're welcome to raise your questions in the "),t("a",{attrs:{href:"https://www.eclipse.org/forums/index.php/f/348/"}},[this._v("Unide forum")]),this._v(".\n  ")])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
diff --git a/files/8e06e143d95ab5687001.js b/files/8e06e143d95ab5687001.js
deleted file mode 100644
index edbd861..0000000
--- a/files/8e06e143d95ab5687001.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see LICENSES */
-(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{11:function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{},t=Object.keys(source);"function"==typeof Object.getOwnPropertySymbols&&(t=t.concat(Object.getOwnPropertySymbols(source).filter(function(e){return Object.getOwnPropertyDescriptor(source,e).enumerable}))),t.forEach(function(t){r(e,t,source[t])})}return e}n.d(t,"a",function(){return o})},120:function(e,t){function n(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}n.keys=function(){return[]},n.resolve=n,e.exports=n,n.id=120},134:function(e,t,n){"use strict";var r=n(37);n.n(r).a},135:function(e,t,n){"use strict";var r=n(38);n.n(r).a},136:function(e,t,n){},137:function(e,t,n){"use strict";var r=n(39);n.n(r).a},138:function(e,t,n){"use strict";var r=n(41);n.n(r).a},139:function(e,t,n){"use strict";var r=n(42);n.n(r).a},140:function(e,t,n){"use strict";var r=n(43);n.n(r).a},141:function(e,t,n){"use strict";var r=n(44);n.n(r).a},142:function(e,t,n){(function(t){var n="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},r=function(){var e=/\blang(?:uage)?-([\w-]+)\b/i,t=0,r=n.Prism={manual:n.Prism&&n.Prism.manual,disableWorkerMessageHandler:n.Prism&&n.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof o?new o(e.type,r.util.encode(e.content),e.alias):"Array"===r.util.type(e)?e.map(r.util.encode):e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function(e,t){var n=r.util.type(e);switch(t=t||{},n){case"Object":if(t[r.util.objId(e)])return t[r.util.objId(e)];var o={};for(var c in t[r.util.objId(e)]=o,e)e.hasOwnProperty(c)&&(o[c]=r.util.clone(e[c],t));return o;case"Array":if(t[r.util.objId(e)])return t[r.util.objId(e)];o=[];return t[r.util.objId(e)]=o,e.forEach(function(e,i){o[i]=r.util.clone(e,t)}),o}return e}},languages:{extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var o in t)n[o]=t[o];return n},insertBefore:function(e,t,n,o){var c=(o=o||r.languages)[e];if(2==arguments.length){for(var l in n=arguments[1])n.hasOwnProperty(l)&&(c[l]=n[l]);return c}var f={};for(var h in c)if(c.hasOwnProperty(h)){if(h==t)for(var l in n)n.hasOwnProperty(l)&&(f[l]=n[l]);f[h]=c[h]}return r.languages.DFS(r.languages,function(t,n){n===o[e]&&t!=e&&(this[t]=f)}),o[e]=f},DFS:function(e,t,n,o){for(var i in o=o||{},e)e.hasOwnProperty(i)&&(t.call(e,i,e[i],n||i),"Object"!==r.util.type(e[i])||o[r.util.objId(e[i])]?"Array"!==r.util.type(e[i])||o[r.util.objId(e[i])]||(o[r.util.objId(e[i])]=!0,r.languages.DFS(e[i],t,i,o)):(o[r.util.objId(e[i])]=!0,r.languages.DFS(e[i],t,null,o)))}},plugins:{},highlightAll:function(e,t){r.highlightAllUnder(document,e,t)},highlightAllUnder:function(e,t,n){var o={callback:n,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};r.hooks.run("before-highlightall",o);for(var element,c=o.elements||e.querySelectorAll(o.selector),i=0;element=c[i++];)r.highlightElement(element,!0===t,o.callback)},highlightElement:function(element,t,o){for(var c,l,f=element;f&&!e.test(f.className);)f=f.parentNode;f&&(c=(f.className.match(e)||[,""])[1].toLowerCase(),l=r.languages[c]),element.className=element.className.replace(e,"").replace(/\s+/g," ")+" language-"+c,element.parentNode&&(f=element.parentNode,/pre/i.test(f.nodeName)&&(f.className=f.className.replace(e,"").replace(/\s+/g," ")+" language-"+c));var h={element:element,language:c,grammar:l,code:element.textContent};if(r.hooks.run("before-sanity-check",h),!h.code||!h.grammar)return h.code&&(r.hooks.run("before-highlight",h),h.element.textContent=h.code,r.hooks.run("after-highlight",h)),void r.hooks.run("complete",h);if(r.hooks.run("before-highlight",h),t&&n.Worker){var d=new Worker(r.filename);d.onmessage=function(e){h.highlightedCode=e.data,r.hooks.run("before-insert",h),h.element.innerHTML=h.highlightedCode,o&&o.call(h.element),r.hooks.run("after-highlight",h),r.hooks.run("complete",h)},d.postMessage(JSON.stringify({language:h.language,code:h.code,immediateClose:!0}))}else h.highlightedCode=r.highlight(h.code,h.grammar,h.language),r.hooks.run("before-insert",h),h.element.innerHTML=h.highlightedCode,o&&o.call(element),r.hooks.run("after-highlight",h),r.hooks.run("complete",h)},highlight:function(text,e,t){var n={code:text,grammar:e,language:t};return r.hooks.run("before-tokenize",n),n.tokens=r.tokenize(n.code,n.grammar),r.hooks.run("after-tokenize",n),o.stringify(r.util.encode(n.tokens),n.language)},matchGrammar:function(text,e,t,n,o,c,l){var f=r.Token;for(var h in t)if(t.hasOwnProperty(h)&&t[h]){if(h==l)return;var d=t[h];d="Array"===r.util.type(d)?d:[d];for(var m=0;m<d.length;++m){var pattern=d[m],v=pattern.inside,y=!!pattern.lookbehind,x=!!pattern.greedy,w=0,_=pattern.alias;if(x&&!pattern.pattern.global){var k=pattern.pattern.toString().match(/[imuy]*$/)[0];pattern.pattern=RegExp(pattern.pattern.source,k+"g")}pattern=pattern.pattern||pattern;for(var i=n,C=o;i<e.length;C+=e[i].length,++i){var $=e[i];if(e.length>text.length)return;if(!($ instanceof f)){if(x&&i!=e.length-1){if(pattern.lastIndex=C,!(O=pattern.exec(text)))break;for(var E=O.index+(y?O[1].length:0),P=O.index+O[0].length,j=i,p=C,A=e.length;j<A&&(p<P||!e[j].type&&!e[j-1].greedy);++j)E>=(p+=e[j].length)&&(++i,C=p);if(e[i]instanceof f)continue;S=j-i,$=text.slice(C,p),O.index-=C}else{pattern.lastIndex=0;var O=pattern.exec($),S=1}if(O){y&&(w=O[1]?O[1].length:0);P=(E=O.index+w)+(O=O[0].slice(w)).length;var T=$.slice(0,E),R=$.slice(P),N=[i,S];T&&(++i,C+=T.length,N.push(T));var F=new f(h,v?r.tokenize(O,v):O,_,O,x);if(N.push(F),R&&N.push(R),Array.prototype.splice.apply(e,N),1!=S&&r.matchGrammar(text,e,t,i,C,!0,h),c)break}else if(c)break}}}}},tokenize:function(text,e,t){var n=[text],o=e.rest;if(o){for(var c in o)e[c]=o[c];delete e.rest}return r.matchGrammar(text,n,e,0,0,!1),n},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var o,i=0;o=n[i++];)o(t)}}},o=r.Token=function(e,content,t,n,r){this.type=e,this.content=content,this.alias=t,this.length=0|(n||"").length,this.greedy=!!r};if(o.stringify=function(e,t,n){if("string"==typeof e)return e;if("Array"===r.util.type(e))return e.map(function(element){return o.stringify(element,t,e)}).join("");var c={type:e.type,content:o.stringify(e.content,t,n),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:n};if(e.alias){var l="Array"===r.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(c.classes,l)}r.hooks.run("wrap",c);var f=Object.keys(c.attributes).map(function(e){return e+'="'+(c.attributes[e]||"").replace(/"/g,"&quot;")+'"'}).join(" ");return"<"+c.tag+' class="'+c.classes.join(" ")+'"'+(f?" "+f:"")+">"+c.content+"</"+c.tag+">"},!n.document)return n.addEventListener?(r.disableWorkerMessageHandler||n.addEventListener("message",function(e){var t=JSON.parse(e.data),o=t.language,code=t.code,c=t.immediateClose;n.postMessage(r.highlight(code,r.languages[o],o)),c&&n.close()},!1),n.Prism):n.Prism;var script=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return script&&(r.filename=script.src,r.manual||script.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(r.highlightAll):window.setTimeout(r.highlightAll,16):document.addEventListener("DOMContentLoaded",r.highlightAll))),n.Prism}();e.exports&&(e.exports=r),void 0!==t&&(t.Prism=r),r.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:/<!DOCTYPE[\s\S]+?>/i,cdata:/<!\[CDATA\[[\s\S]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},r.languages.markup.tag.inside["attr-value"].inside.entity=r.languages.markup.entity,r.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&amp;/,"&"))}),r.languages.xml=r.languages.markup,r.languages.html=r.languages.markup,r.languages.mathml=r.languages.markup,r.languages.svg=r.languages.markup,r.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},r.languages.css.atrule.inside.rest=r.languages.css,r.languages.markup&&(r.languages.insertBefore("markup","tag",{style:{pattern:/(<style[\s\S]*?>)[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:r.languages.css,alias:"language-css",greedy:!0}}),r.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:r.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:r.languages.css}},alias:"language-css"}},r.languages.markup.tag)),r.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/[a-z0-9_]+(?=\()/i,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},r.languages.javascript=r.languages.extend("clike",{keyword:/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),r.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"},constant:/\b[A-Z][A-Z\d_]*\b/}),r.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\${[^}]+}/,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}}}),r.languages.javascript["template-string"].inside.interpolation.inside.rest=r.languages.javascript,r.languages.markup&&r.languages.insertBefore("markup","tag",{script:{pattern:/(<script[\s\S]*?>)[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:r.languages.javascript,alias:"language-javascript",greedy:!0}}),r.languages.js=r.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(pre){for(var t,n=pre.getAttribute("data-src"),o=pre,c=/\blang(?:uage)?-([\w-]+)\b/i;o&&!c.test(o.className);)o=o.parentNode;if(o&&(t=(pre.className.match(c)||[,""])[1]),!t){var l=(n.match(/\.(\w+)$/)||[,""])[1];t=e[l]||l}var code=document.createElement("code");code.className="language-"+t,pre.textContent="",code.textContent="Loading…",pre.appendChild(code);var f=new XMLHttpRequest;f.open("GET",n,!0),f.onreadystatechange=function(){4==f.readyState&&(f.status<400&&f.responseText?(code.textContent=f.responseText,r.highlightElement(code)):f.status>=400?code.textContent="✖ Error "+f.status+" while fetching file: "+f.statusText:code.textContent="✖ Error: File does not exist or is empty")},f.send(null)}),r.plugins.toolbar&&r.plugins.toolbar.registerButton("download-file",function(e){var pre=e.element.parentNode;if(pre&&/pre/i.test(pre.nodeName)&&pre.hasAttribute("data-src")&&pre.hasAttribute("data-download-link")){var t=pre.getAttribute("data-src"),a=document.createElement("a");return a.textContent=pre.getAttribute("data-download-link-label")||"Download",a.setAttribute("download",""),a.href=t,a}})},document.addEventListener("DOMContentLoaded",self.Prism.fileHighlight))}).call(this,n(22))},143:function(e,t){Prism.languages.json={property:/"(?:\\.|[^\\"\r\n])*"(?=\s*:)/i,string:{pattern:/"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,greedy:!0},number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,punctuation:/[{}[\]);,]/,operator:/:/g,boolean:/\b(?:true|false)\b/i,null:/\bnull\b/i},Prism.languages.jsonp=Prism.languages.json},144:function(e,t,n){"use strict";n.r(t);n(66),n(51),n(52);function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e){return(o="function"==typeof Symbol&&"symbol"===r(Symbol.iterator)?function(e){return r(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":r(e)})(e)}n(45),n(102);var c=n(5),l=(n(78),n(80),n(63),n(21),n(64),n(46),n(83),n(107),n(119),n(0)),f=(n(61),n(120)),h=f.keys();function d(e){var t=f(e);return t.default||t}var m={},v=!0,y=!1,x=void 0;try{for(var w,_=h[Symbol.iterator]();!(v=(w=_.next()).done);v=!0){var k=w.value;m[k.replace(/^\.\//,"").replace(/\.(js|mjs|ts)$/,"")]=d(k)}}catch(e){y=!0,x=e}finally{try{v||null==_.return||_.return()}finally{if(y)throw x}}var C=m,$=(n(62),n(121),n(122),n(124),n(126),n(127),n(130),n(11));function E(e){l.a.config.errorHandler&&l.a.config.errorHandler(e)}function P(e){return e.then(function(e){return e.default||e})}function j(e,t){if(t||!e.options.__hasNuxtData){var n=e.options._originDataFn||e.options.data||function(){return{}};e.options._originDataFn=n,e.options.data=function(){var data=n.call(this);return this.$ssrContext&&(t=this.$ssrContext.asyncData[e.cid]),Object($.a)({},data,t)},e.options.__hasNuxtData=!0,e._Ctor&&e._Ctor.options&&(e._Ctor.options.data=e.options.data)}}function A(e){return e.options&&e._Ctor===e?e:(e.options?(e._Ctor=e,e.extendOptions=e.options):(e=l.a.extend(e))._Ctor=e,!e.options.name&&e.options.__file&&(e.options.name=e.options.__file),e)}function O(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return Array.prototype.concat.apply([],e.matched.map(function(e,n){return Object.keys(e.components).map(function(r){return t&&t.push(n),e.components[r]})}))}function S(e,t){return Array.prototype.concat.apply([],e.matched.map(function(e,n){return Object.keys(e.components).reduce(function(r,o){return e.components[o]?r.push(t(e.components[o],e.instances[o],e,o,n)):delete e.components[o],r},[])}))}function T(e){return Promise.all(S(e,function(){var e=Object(c.a)(regeneratorRuntime.mark(function e(t,n,r,o){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("function"!=typeof t||t.options){e.next=4;break}return e.next=3,t();case 3:t=e.sent;case 4:return r.components[o]=A(t),e.abrupt("return",r.components[o]);case 6:case"end":return e.stop()}},e)}));return function(t,n,r,o){return e.apply(this,arguments)}}()))}function R(e){return N.apply(this,arguments)}function N(){return(N=Object(c.a)(regeneratorRuntime.mark(function e(t){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,T(t);case 2:return e.abrupt("return",Object($.a)({},t,{meta:O(t).map(function(e,n){return Object($.a)({},e.options.meta,(t.matched[n]||{}).meta)})}));case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function F(e,t){return L.apply(this,arguments)}function L(){return(L=Object(c.a)(regeneratorRuntime.mark(function e(t,n){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.context||(t.context={isStatic:!0,isDev:!1,isHMR:!1,app:t,payload:n.payload,error:n.error,base:"/unide/",env:{}},n.req&&(t.context.req=n.req),n.res&&(t.context.res=n.res),t.context.redirect=function(e,path,n){if(e){t.context._redirected=!0;var r=o(path);if("number"==typeof e||"undefined"!==r&&"object"!==r||(n=path||{},r=o(path=e),e=302),"object"===r&&(path=t.router.resolve(path).href),!/(^[.]{1,2}\/)|(^\/(?!\/))/.test(path))throw path=K(path,n),window.location.replace(path),new Error("ERR_REDIRECT");t.context.next({path:path,query:n,status:e})}},t.context.nuxtState=window.__NUXT__),t.context.next=n.next,t.context._redirected=!1,t.context._errored=!1,t.context.isHMR=!!n.isHMR,!n.route){e.next=9;break}return e.next=8,R(n.route);case 8:t.context.route=e.sent;case 9:if(t.context.params=t.context.route.params||{},t.context.query=t.context.route.query||{},!n.from){e.next=15;break}return e.next=14,R(n.from);case 14:t.context.from=e.sent;case 15:case"end":return e.stop()}},e)}))).apply(this,arguments)}function M(e,t){var n;return(n=2===e.length?new Promise(function(n){e(t,function(e,data){e&&t.error(e),n(data=data||{})})}):e(t))&&(n instanceof Promise||"function"==typeof n.then)||(n=Promise.resolve(n)),n}function D(base,e){var path=window.location.pathname;return"hash"===e?window.location.hash.replace(/^#\//,""):(base&&0===path.indexOf(base)&&(path=path.slice(base.length)),decodeURI(path||"/")+window.location.search+window.location.hash)}function I(e,t){return function(e){for(var t=new Array(e.length),i=0;i<e.length;i++)"object"===o(e[i])&&(t[i]=new RegExp("^(?:"+e[i].pattern+")$"));return function(n,r){for(var path="",data=n||{},o=r||{},c=o.pretty?H:encodeURIComponent,l=0;l<e.length;l++){var f=e[l];if("string"!=typeof f){var h=data[f.name||"pathMatch"],d=void 0;if(null==h){if(f.optional){f.partial&&(path+=f.prefix);continue}throw new TypeError('Expected "'+f.name+'" to be defined')}if(Array.isArray(h)){if(!f.repeat)throw new TypeError('Expected "'+f.name+'" to not repeat, but received `'+JSON.stringify(h)+"`");if(0===h.length){if(f.optional)continue;throw new TypeError('Expected "'+f.name+'" to not be empty')}for(var m=0;m<h.length;m++){if(d=c(h[m]),!t[l].test(d))throw new TypeError('Expected all "'+f.name+'" to match "'+f.pattern+'", but received `'+JSON.stringify(d)+"`");path+=(0===m?f.prefix:f.delimiter)+d}}else{if(d=f.asterisk?encodeURI(h).replace(/[?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}):c(h),!t[l].test(d))throw new TypeError('Expected "'+f.name+'" to match "'+f.pattern+'", but received "'+d+'"');path+=f.prefix+d}}else path+=f}return path}}(function(e,t){var n,r=[],o=0,c=0,path="",l=t&&t.delimiter||"/";for(;null!=(n=z.exec(e));){var f=n[0],h=n[1],d=n.index;if(path+=e.slice(c,d),c=d+f.length,h)path+=h[1];else{var m=e[c],v=n[2],y=n[3],x=n[4],w=n[5],_=n[6],k=n[7];path&&(r.push(path),path="");var C=null!=v&&null!=m&&m!==v,$="+"===_||"*"===_,E="?"===_||"*"===_,P=n[2]||l,pattern=x||w;r.push({name:y||o++,prefix:v||"",delimiter:P,optional:E,repeat:$,partial:C,asterisk:!!k,pattern:pattern?W(pattern):k?".*":"[^"+J(P)+"]+?"})}}c<e.length&&(path+=e.substr(c));path&&r.push(path);return r}(e,t))}function B(e,t){var n={},r=Object($.a)({},e,t);for(var o in r)String(e[o])!==String(t[o])&&(n[o]=!0);return n}function U(e){var t;if(e.message||"string"==typeof e)t=e.message||e;else try{t=JSON.stringify(e,null,2)}catch(n){t="[".concat(e.constructor.name,"]")}return Object($.a)({},e,{message:t,statusCode:e.statusCode||e.status||e.response&&e.response.status||500})}window.onNuxtReadyCbs=[],window.onNuxtReady=function(e){window.onNuxtReadyCbs.push(e)};var z=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function H(e){return encodeURI(e).replace(/[\/?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function J(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function W(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function K(e,t){var n,r=e.indexOf("://");-1!==r?(n=e.substring(0,r),e=e.substring(r+3)):e.startsWith("//")&&(e=e.substring(2));var o,c=e.split("/"),l=(n?n+"://":"//")+c.shift(),path=c.filter(Boolean).join("/");return 2===(c=path.split("#")).length&&(path=c[0],o=c[1]),l+=path?"/"+path:"",t&&"{}"!==JSON.stringify(t)&&(l+=(2===e.split("?").length?"&":"?")+function(e){return Object.keys(e).sort().map(function(t){var n=e[t];return null==n?"":Array.isArray(n)?n.slice().map(function(e){return[t,"=",e].join("")}).join("&"):t+"="+n}).filter(Boolean).join("&")}(t)),l+=o?"#"+o:""}var Q=n(88),Z=n.n(Q),G=n(60),V=function(){return P(Promise.all([n.e(2),n.e(5)]).then(n.bind(null,367)))},X=function(){return P(Promise.all([n.e(2),n.e(6)]).then(n.bind(null,366)))},Y=function(){return P(n.e(7).then(n.bind(null,365)))},ee=function(){return P(n.e(9).then(n.bind(null,358)))},te=function(){return P(n.e(10).then(n.bind(null,364)))},ne=function(){return P(n.e(11).then(n.bind(null,370)))},re=function(){return P(Promise.all([n.e(1),n.e(0),n.e(12)]).then(n.bind(null,368)))},ae=function(){return P(Promise.all([n.e(1),n.e(0),n.e(13)]).then(n.bind(null,362)))},ie=function(){return P(Promise.all([n.e(1),n.e(0),n.e(14)]).then(n.bind(null,361)))},oe=function(){return P(Promise.all([n.e(1),n.e(0),n.e(15)]).then(n.bind(null,360)))},se=function(){return P(Promise.all([n.e(1),n.e(0),n.e(16)]).then(n.bind(null,359)))},ue=function(){return P(Promise.all([n.e(1),n.e(0),n.e(17)]).then(n.bind(null,363)))},ce=function(){return P(n.e(8).then(n.bind(null,369)))};l.a.use(G.a);var le=function(e,t,n){var r=e.hash;return n||(r?{selector:r}:{})};var pe=n(89),fe=n.n(pe),he=Object($.a)({},fe.a,{name:"NoSsr"}),de={name:"NuxtChild",functional:!0,props:{nuxtChildKey:{type:String,default:""},keepAlive:Boolean,keepAliveProps:{type:Object,default:void 0}},render:function(e,t){var n=t.parent,data=t.data,r=t.props;data.nuxtChild=!0;for(var o=n,c=n.$nuxt.nuxt.transitions,l=n.$nuxt.nuxt.defaultTransition,f=0;n;)n.$vnode&&n.$vnode.data.nuxtChild&&f++,n=n.$parent;data.nuxtChildDepth=f;var h=c[f]||l,d={};me.forEach(function(e){void 0!==h[e]&&(d[e]=h[e])});var m={};ge.forEach(function(e){"function"==typeof h[e]&&(m[e]=h[e].bind(o))});var v=m.beforeEnter;m.beforeEnter=function(e){if(window.$nuxt.$nextTick(function(){window.$nuxt.$emit("triggerScroll")}),v)return v.call(o,e)};var y=[e("router-view",data)];return r.keepAlive&&(y=[e("keep-alive",{props:r.keepAliveProps},y)]),e("transition",{props:d,on:m},y)}},me=["name","mode","appear","css","type","duration","enterClass","leaveClass","appearClass","enterActiveClass","enterActiveClass","leaveActiveClass","appearActiveClass","enterToClass","leaveToClass","appearToClass"],ge=["beforeEnter","enter","afterEnter","enterCancelled","beforeLeave","leave","afterLeave","leaveCancelled","beforeAppear","appear","afterAppear","appearCancelled"],ve={name:"NuxtError",props:{error:{type:Object,default:null}},head:function(){return{title:this.message,meta:[{name:"viewport",content:"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"}]}},computed:{statusCode:function(){return this.error&&this.error.statusCode||500},message:function(){return this.error.message||"Error"}}},ye=(n(134),n(2)),be=Object(ye.a)(ve,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"__nuxt-error-page"},[n("div",{staticClass:"error"},[n("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"90",height:"90",fill:"#DBE1EC",viewBox:"0 0 48 48"}},[n("path",{attrs:{d:"M22 30h4v4h-4zm0-16h4v12h-4zm1.99-10C12.94 4 4 12.95 4 24s8.94 20 19.99 20S44 35.05 44 24 35.04 4 23.99 4zM24 40c-8.84 0-16-7.16-16-16S15.16 8 24 8s16 7.16 16 16-7.16 16-16 16z"}})]),e._v(" "),n("div",{staticClass:"title"},[e._v(e._s(e.message))]),e._v(" "),404===e.statusCode?n("p",{staticClass:"description"},[n("NuxtLink",{staticClass:"error-link",attrs:{to:"/"}},[e._v("Back to the home page")])],1):e._e(),e._v(" "),e._m(0)])])},[function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"logo"},[t("a",{attrs:{href:"https://nuxtjs.org",target:"_blank",rel:"noopener"}},[this._v("Nuxt.js")])])}],!1,null,null,null).exports,xe={name:"Nuxt",components:{NuxtChild:de,NuxtError:be},props:{nuxtChildKey:{type:String,default:void 0},keepAlive:Boolean,keepAliveProps:{type:Object,default:void 0},name:{type:String,default:"default"}},computed:{routerViewKey:function(){if(void 0!==this.nuxtChildKey||this.$route.matched.length>1)return this.nuxtChildKey||I(this.$route.matched[0].path)(this.$route.params);var e=this.$route.matched[0]&&this.$route.matched[0].components.default;return e&&e.options&&e.options.key?"function"==typeof e.options.key?e.options.key(this.$route):e.options.key:this.$route.path}},beforeCreate:function(){l.a.util.defineReactive(this,"nuxt",this.$root.$options.nuxt)},render:function(e){return this.nuxt.err?e("NuxtError",{props:{error:this.nuxt.err}}):e("NuxtChild",{key:this.routerViewKey,props:this.$props})}},we={name:"NuxtLoading",data:function(){return{percent:0,show:!1,canSucceed:!0,reversed:!1,skipTimerCount:0,rtl:!1,throttle:200,duration:5e3,continuous:!1}},computed:{left:function(){return!(!this.continuous&&!this.rtl)&&(this.rtl?this.reversed?"0px":"auto":this.reversed?"auto":"0px")}},beforeDestroy:function(){this.clear()},methods:{clear:function(){clearInterval(this._timer),clearTimeout(this._throttle),this._timer=null},start:function(){var e=this;return this.clear(),this.percent=0,this.reversed=!1,this.skipTimerCount=0,this.canSucceed=!0,this.throttle?this._throttle=setTimeout(function(){return e.startTimer()},this.throttle):this.startTimer(),this},set:function(e){return this.show=!0,this.canSucceed=!0,this.percent=Math.min(100,Math.max(0,Math.floor(e))),this},get:function(){return this.percent},increase:function(e){return this.percent=Math.min(100,Math.floor(this.percent+e)),this},decrease:function(e){return this.percent=Math.max(0,Math.floor(this.percent-e)),this},pause:function(){return clearInterval(this._timer),this},resume:function(){return this.startTimer(),this},finish:function(){return this.percent=this.reversed?0:100,this.hide(),this},hide:function(){var e=this;return this.clear(),setTimeout(function(){e.show=!1,e.$nextTick(function(){e.percent=0,e.reversed=!1})},500),this},fail:function(){return this.canSucceed=!1,this},startTimer:function(){var e=this;this.show||(this.show=!0),void 0===this._cut&&(this._cut=1e4/Math.floor(this.duration)),this._timer=setInterval(function(){e.skipTimerCount>0?e.skipTimerCount--:(e.reversed?e.decrease(e._cut):e.increase(e._cut),e.continuous&&(e.percent>=100?(e.skipTimerCount=1,e.reversed=!e.reversed):e.percent<=0&&(e.skipTimerCount=1,e.reversed=!e.reversed)))},100)}},render:function(e){var t=e(!1);return this.show&&(t=e("div",{staticClass:"nuxt-progress",class:{"nuxt-progress-notransition":this.skipTimerCount>0,"nuxt-progress-failed":!this.canSucceed},style:{width:this.percent+"%",left:this.left}})),t}},_e=(n(135),Object(ye.a)(we,void 0,void 0,!1,null,null,null).exports),ke=(n(136),n(137),Object(ye.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("footer",{staticClass:"footer"},[n("div",{staticClass:"container"},[n("div",{staticClass:"columns is-mobile is-multiline is-centered"},[n("div",{staticClass:"column is-narrow"},[n("a",{attrs:{href:"http://www.eclipse.org"}},[e._v("Eclipse Foundation")])]),e._v(" "),n("div",{staticClass:"column is-narrow"},[n("a",{attrs:{href:"http://www.eclipse.org/legal/privacy.php"}},[e._v("Privacy Policy")])]),e._v(" "),n("div",{staticClass:"column is-narrow"},[n("a",{attrs:{href:"http://www.eclipse.org/legal/termsofuse.php"}},[e._v("Terms of Use")])]),e._v(" "),n("div",{staticClass:"column is-narrow"},[n("a",{attrs:{href:"http://www.eclipse.org/legal/copyright.php"}},[e._v("Copyright Agent")])]),e._v(" "),n("div",{staticClass:"column is-narrow"},[n("a",{attrs:{href:"https://eclipse.org/security/ "}},[e._v("Security reports")])]),e._v(" "),n("div",{staticClass:"column is-narrow"},[n("a",{attrs:{href:"http://www.eclipse.org/legal/"}},[e._v("Legal")])])])])])}],!1,null,null,null).exports),Ce=n(40).a,$e=(n(138),Object(ye.a)(Ce,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("header",{staticClass:"nav-header"},[n("div",{staticClass:"container"},[n("nav",{staticClass:"navbar"},[n("div",{staticClass:"navbar-menu",class:{"is-active":e.isMenuActive},attrs:{id:"navMenu"},on:{click:function(t){e.isMenuActive=!1}}},[n("div",{staticClass:"navbar-start"},[e._t("default")],2)]),e._v(" "),n("div",{staticClass:"navbar-brand"},[n("div",{staticClass:"navbar-burger burger",class:{"is-active":e.isMenuActive},on:{click:function(t){e.isMenuActive=!e.isMenuActive}}},[n("span"),e._v(" "),n("span"),e._v(" "),n("span")]),e._v(" "),n("nuxt-link",{staticClass:"navbar-item",attrs:{to:"/"}},[n("img",{attrs:{src:"logo.svg",alt:e.brand}})])],1)])])])},[],!1,null,null,null).exports),Ee={components:{eclipseFooter:ke,navbar:$e}},Pe=Object(ye.a)(Ee,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("navbar",[n("nuxt-link",{staticClass:"navbar-item",attrs:{exact:"","active-class":"is-active",to:"/"}},[e._v("\n      Home\n    ")]),e._v(" "),n("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/proposal"}},[e._v("\n      Proposal\n    ")]),e._v(" "),n("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/specification"}},[e._v("\n      Specification\n    ")]),e._v(" "),n("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/blog"}},[e._v("\n      Blog Archives\n    ")]),e._v(" "),n("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/faq"}},[e._v("\n      FAQ\n    ")])],1),e._v(" "),n("div",{staticClass:"container"},[n("div",{staticClass:"header clearfix"}),e._v(" "),n("nuxt")],1),e._v(" "),n("eclipseFooter")],1)},[],!1,null,null,null).exports,je=n(90),Ae={data:function(){return{posts:je.slice().reverse()}},components:{}},Oe=(n(139),Object(ye.a)(Ae,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"recentPosts"},[n("h4",{staticClass:"subtitle is-5"},[e._v("\n    Recent Posts\n  ")]),e._v(" "),n("ul",e._l(e.posts,function(t){return n("li",{key:t.url},[n("nuxt-link",{attrs:{to:t.url}},[e._v("\n        "+e._s(t.title)+"\n      ")])],1)}),0)])},[],!1,null,null,null).exports),Se=n(91),Te=(navigator.languages&&navigator.languages[0]||navigator.language||navigator.userLanguage).toLowerCase().split(/[_-]+/)[0],Re={data:function(){return{posts:Se.slice().reverse()}},filters:{timeStamp:function(e){var t=e.year,n=e.month,r=new Date(Date.UTC(t,n||0,1));return Intl.DateTimeFormat(Te,{month:"long",year:"numeric"}).format(r)}}},Ne=(n(140),{components:{eclipseFooter:ke,blogArchives:Object(ye.a)(Re,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"blogArchives"},[n("h4",{staticClass:"subtitle is-5"},[e._v("\n    Blog Archives\n  ")]),e._v(" "),n("ul",e._l(e.posts,function(t){return n("li",{key:t.url},[n("nuxt-link",{attrs:{to:t.url}},[e._v("\n        "+e._s(e._f("timeStamp")(t))+"\n      ")]),e._v("\n      ("+e._s(t.count)+")\n    ")],1)}),0)])},[],!1,null,null,null).exports,navbar:$e,recentPosts:Oe}}),Fe=(n(141),{_default:Pe,_sidebar:Object(ye.a)(Ne,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("navbar",[n("nuxt-link",{staticClass:"navbar-item",attrs:{exact:"","active-class":"is-active",to:"/"}},[e._v("\n      Home\n    ")]),e._v(" "),n("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/proposal"}},[e._v("\n      Proposal\n    ")]),e._v(" "),n("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/specification"}},[e._v("\n      Specification\n    ")]),e._v(" "),n("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/blog"}},[e._v("\n      Blog Archives\n    ")]),e._v(" "),n("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/faq"}},[e._v("\n      FAQ\n    ")])],1),e._v(" "),n("div",{staticClass:"container"},[n("div",{staticClass:"header clearfix"}),e._v(" "),n("div",{staticClass:"columns"},[n("nuxt",{staticClass:"column is-8"}),e._v(" "),n("div",{staticClass:"sidebar column is-3 is-offset-1"},[n("recentPosts"),e._v(" "),n("blogArchives")],1)],1)]),e._v(" "),n("eclipseFooter")],1)},[],!1,null,null,null).exports}),Le={head:{title:"Welcome",titleTemplate:"Eclipse unide - %s",meta:[{charset:"utf-8"},{name:"viewport",content:"width=device-width, initial-scale=1"},{hid:"description",name:"description",content:"Eclipse Unide: Understand Industry devices"}],link:[{rel:"icon",type:"image/x-icon",href:"/unide/favicon.ico"}],style:[],script:[]},render:function(e,t){var n=e("NuxtLoading",{ref:"loading"}),r=e(this.layout||"nuxt"),o=e("div",{domProps:{id:"__layout"},key:this.layoutName},[r]),c=e("transition",{props:{name:"layout",mode:"out-in"},on:{beforeEnter:function(e){window.$nuxt.$nextTick(function(){window.$nuxt.$emit("triggerScroll")})}}},[o]);return e("div",{domProps:{id:"__nuxt"}},[n,c])},data:function(){return{isOnline:!0,layout:null,layoutName:""}},beforeCreate:function(){l.a.util.defineReactive(this,"nuxt",this.$options.nuxt)},created:function(){l.a.prototype.$nuxt=this,window.$nuxt=this,this.refreshOnlineStatus(),window.addEventListener("online",this.refreshOnlineStatus),window.addEventListener("offline",this.refreshOnlineStatus),this.error=this.nuxt.error},mounted:function(){this.$loading=this.$refs.loading},watch:{"nuxt.err":"errorChanged"},computed:{isOffline:function(){return!this.isOnline}},methods:{refreshOnlineStatus:function(){void 0===window.navigator.onLine?this.isOnline=!0:this.isOnline=window.navigator.onLine},errorChanged:function(){this.nuxt.err&&this.$loading&&(this.$loading.fail&&this.$loading.fail(),this.$loading.finish&&this.$loading.finish())},setLayout:function(e){return e&&Fe["_"+e]||(e="default"),this.layoutName=e,this.layout=Fe["_"+e],this.layout},loadLayout:function(e){return e&&Fe["_"+e]||(e="default"),Promise.resolve(Fe["_"+e])}},components:{NuxtLoading:_e}};n(142),n(143);l.a.component(he.name,he),l.a.component(de.name,de),l.a.component("NChild",de),l.a.component(xe.name,xe),l.a.use(Z.a,{keyName:"head",attribute:"data-n-head",ssrAttribute:"data-n-head-ssr",tagIDKeyName:"hid"});var Me={name:"page",mode:"out-in",appear:!1,appearClass:"appear",appearActiveClass:"appear-active",appearToClass:"appear-to"};function De(){return(De=Object(c.a)(regeneratorRuntime.mark(function e(t){var n,r,o,c,path;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,new G.a({mode:"history",base:"/unide/",linkActiveClass:"nuxt-link-active",linkExactActiveClass:"nuxt-link-exact-active",scrollBehavior:le,routes:[{path:"/article",component:V,name:"article"},{path:"/blog",component:X,name:"blog"},{path:"/faq",component:Y,name:"faq"},{path:"/proposal",component:ee,name:"proposal"},{path:"/specification",component:te,children:[{path:"",component:ne,name:"specification"},{path:"v2/machine-message",component:re,name:"specification-v2-machine-message"},{path:"v2/measurement-message",component:ae,name:"specification-v2-measurement-message"},{path:"v2/process-message",component:ie,name:"specification-v2-process-message"},{path:"v3/machine-message",component:oe,name:"specification-v3-machine-message"},{path:"v3/measurement-message",component:se,name:"specification-v3-measurement-message"},{path:"v3/process-message",component:ue,name:"specification-v3-process-message"}]},{path:"/",component:ce,name:"index"},{path:"/specification/machine-message",redirect:"/specification/v3/machine-message"},{path:"/specification/measurement-message",redirect:"/specification/v3/measurement-message"},{path:"/specification/process-message",redirect:"/specification/v3/process-message"},{path:"/blog/:year/:month/:day/:name",component:V,name:"article"},{path:"/blog/:year?/:month?/:day?",component:X,name:"blog"}],fallback:!1});case 2:return n=e.sent,r=Object($.a)({router:n,nuxt:{defaultTransition:Me,transitions:[Me],setTransitions:function(e){return Array.isArray(e)||(e=[e]),e=e.map(function(e){return e=e?"string"==typeof e?Object.assign({},Me,{name:e}):Object.assign({},Me,e):Me}),this.$options.nuxt.transitions=e,e},err:null,dateErr:null,error:function(e){e=e||null,r.context._errored=!!e,e=e?U(e):null;var n=this.nuxt||this.$options.nuxt;return n.dateErr=Date.now(),n.err=e,t&&(t.nuxt.error=e),e}}},Le),o=t?t.next:function(e){return r.router.push(e)},t?c=n.resolve(t.url).route:(path=D(n.options.base),c=n.resolve(path).route),e.next=8,F(r,{route:c,next:o,error:r.nuxt.error.bind(r),payload:t?t.payload:void 0,req:t?t.req:void 0,res:t?t.res:void 0,beforeRenderFns:t?t.beforeRenderFns:void 0});case 8:(function(e,t){if(!e)throw new Error("inject(key, value) has no key provided");if(void 0===t)throw new Error("inject(key, value) has no value provided");r[e="$"+e]=t;var n="__nuxt_"+e+"_installed__";l.a[n]||(l.a[n]=!0,l.a.use(function(){l.a.prototype.hasOwnProperty(e)||Object.defineProperty(l.a.prototype,e,{get:function(){return this.$root.$options[e]}})}))}),e.next=12;break;case 12:e.next=15;break;case 15:return e.abrupt("return",{app:r,router:n});case 16:case"end":return e.stop()}},e)}))).apply(this,arguments)}var qe=window.requestIdleCallback||function(e){var t=Date.now();return setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)},Ie=window.IntersectionObserver&&new window.IntersectionObserver(function(e){e.forEach(function(e){var t=e.intersectionRatio,link=e.target;t<=0||link.__prefetch()})}),Be={name:"NuxtLink",extends:l.a.component("RouterLink"),props:{noPrefetch:{type:Boolean,default:!1}},mounted:function(){this.noPrefetch||qe(this.observe,{timeout:2e3})},beforeDestroy:function(){this.__observed&&(Ie.unobserve(this.$el),delete this.$el.__prefetch)},methods:{observe:function(){Ie&&this.shouldPrefetch()&&(this.$el.__prefetch=this.prefetch.bind(this),Ie.observe(this.$el),this.__observed=!0)},shouldPrefetch:function(){return this.getPrefetchComponents().length>0},canPrefetch:function(){var e=navigator.connection;return!(this.$nuxt.isOffline||e&&((e.effectiveType||"").includes("2g")||e.saveData))},getPrefetchComponents:function(){return this.$router.resolve(this.to,this.$route,this.append).resolved.matched.map(function(e){return e.components.default}).filter(function(e){return"function"==typeof e&&!e.options&&!e.__prefetched})},prefetch:function(){if(this.canPrefetch()){Ie.unobserve(this.$el);var e=this.getPrefetchComponents(),t=!0,n=!1,r=void 0;try{for(var o,c=e[Symbol.iterator]();!(t=(o=c.next()).done);t=!0){var l=o.value;try{l(),l.__prefetched=!0}catch(e){}}}catch(e){n=!0,r=e}finally{try{t||null==c.return||c.return()}finally{if(n)throw r}}}}}};l.a.component(Be.name,Be),l.a.component("NLink",Be);var Ue,ze,He=[],Je=window.__NUXT__||{};Object.assign(l.a.config,{silent:!0,performance:!1});var We=l.a.config.errorHandler||console.error;function Ke(e,t,n){var r=function(component){var e=function(component,e){if(!component||!component.options||!component.options[e])return{};var option=component.options[e];if("function"==typeof option){for(var t=arguments.length,n=new Array(t>2?t-2:0),r=2;r<t;r++)n[r-2]=arguments[r];return option.apply(void 0,n)}return option}(component,"transition",t,n)||{};return"string"==typeof e?{name:e}:e};return e.map(function(e){var t=Object.assign({},r(e));if(n&&n.matched.length&&n.matched[0].components.default){var o=r(n.matched[0].components.default);Object.keys(o).filter(function(e){return o[e]&&e.toLowerCase().includes("leave")}).forEach(function(e){t[e]=o[e]})}return t})}function Qe(e,t,n){return Ze.apply(this,arguments)}function Ze(){return(Ze=Object(c.a)(regeneratorRuntime.mark(function e(t,n,r){var o,c,l,f,h=this;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this._pathChanged=!!Ue.nuxt.err||n.path!==t.path,this._queryChanged=JSON.stringify(t.query)!==JSON.stringify(n.query),this._diffQuery=this._queryChanged?B(t.query,n.query):[],this._pathChanged&&this.$loading.start&&!this.$loading.manual&&this.$loading.start(),e.prev=4,e.next=7,T(t);case 7:o=e.sent,!this._pathChanged&&this._queryChanged&&o.some(function(e){var t=e.options.watchQuery;return!0===t||!!Array.isArray(t)&&t.some(function(e){return h._diffQuery[e]})})&&this.$loading.start&&!this.$loading.manual&&this.$loading.start(),r(),e.next=23;break;case 12:if(e.prev=12,e.t0=e.catch(4),c=e.t0||{},l=c.statusCode||c.status||c.response&&c.response.status||500,f=c.message||"",!/^Loading chunk (\d)+ failed\./.test(f)){e.next=20;break}return window.location.reload(!0),e.abrupt("return");case 20:this.error({statusCode:l,message:f}),this.$nuxt.$emit("routeChanged",t,n,c),r();case 23:case"end":return e.stop()}},e,this,[[4,12]])}))).apply(this,arguments)}function Ge(e,t){return Je.serverRendered&&t&&j(e,t),e._Ctor=e,e}function Ve(e,t,n){var r=this,o=[],c=!1;if(void 0!==n&&(o=[],(n=A(n)).options.middleware&&(o=o.concat(n.options.middleware)),e.forEach(function(e){e.options.middleware&&(o=o.concat(e.options.middleware))})),o=o.map(function(e){return"function"==typeof e?e:("function"!=typeof C[e]&&(c=!0,r.error({statusCode:500,message:"Unknown middleware "+e})),C[e])}),!c)return function e(t,n){return!t.length||n._redirected||n._errored?Promise.resolve():M(t[0],n).then(function(){return e(t.slice(1),n)})}(o,t)}function Xe(e,t,n){return Ye.apply(this,arguments)}function Ye(){return(Ye=Object(c.a)(regeneratorRuntime.mark(function e(t,n,r){var o,c,l,f,h,d,m,v,y,x,w,_,k,C,$,P,A=this;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!1!==this._pathChanged||!1!==this._queryChanged){e.next=2;break}return e.abrupt("return",r());case 2:return He=t===n?[]:O(n,o=[]).map(function(e,i){return I(n.matched[o[i]].path)(n.params)}),c=!1,l=function(path){n.path===path.path&&A.$loading.finish&&A.$loading.finish(),n.path!==path.path&&A.$loading.pause&&A.$loading.pause(),c||(c=!0,r(path))},e.next=7,F(Ue,{route:t,from:n,next:l.bind(this)});case 7:if(this._dateLastError=Ue.nuxt.dateErr,this._hadError=!!Ue.nuxt.err,(h=O(t,f=[])).length){e.next=25;break}return e.next=14,Ve.call(this,h,Ue.context);case 14:if(!c){e.next=16;break}return e.abrupt("return");case 16:return e.next=18,this.loadLayout("function"==typeof be.layout?be.layout(Ue.context):be.layout);case 18:return d=e.sent,e.next=21,Ve.call(this,h,Ue.context,d);case 21:if(!c){e.next=23;break}return e.abrupt("return");case 23:return Ue.context.error({statusCode:404,message:"This page could not be found"}),e.abrupt("return",r());case 25:return h.forEach(function(e){e._Ctor&&e._Ctor.options&&(e.options.asyncData=e._Ctor.options.asyncData,e.options.fetch=e._Ctor.options.fetch)}),this.setTransitions(Ke(h,t,n)),e.prev=27,e.next=30,Ve.call(this,h,Ue.context);case 30:if(!c){e.next=32;break}return e.abrupt("return");case 32:if(!Ue.context._errored){e.next=34;break}return e.abrupt("return",r());case 34:return"function"==typeof(m=h[0].options.layout)&&(m=m(Ue.context)),e.next=38,this.loadLayout(m);case 38:return m=e.sent,e.next=41,Ve.call(this,h,Ue.context,m);case 41:if(!c){e.next=43;break}return e.abrupt("return");case 43:if(!Ue.context._errored){e.next=45;break}return e.abrupt("return",r());case 45:v=!0,e.prev=46,y=!0,x=!1,w=void 0,e.prev=50,_=h[Symbol.iterator]();case 52:if(y=(k=_.next()).done){e.next=64;break}if("function"==typeof(C=k.value).options.validate){e.next=56;break}return e.abrupt("continue",61);case 56:return e.next=58,C.options.validate(Ue.context);case 58:if(v=e.sent){e.next=61;break}return e.abrupt("break",64);case 61:y=!0,e.next=52;break;case 64:e.next=70;break;case 66:e.prev=66,e.t0=e.catch(50),x=!0,w=e.t0;case 70:e.prev=70,e.prev=71,y||null==_.return||_.return();case 73:if(e.prev=73,!x){e.next=76;break}throw w;case 76:return e.finish(73);case 77:return e.finish(70);case 78:e.next=84;break;case 80:return e.prev=80,e.t1=e.catch(46),this.error({statusCode:e.t1.statusCode||"500",message:e.t1.message}),e.abrupt("return",r());case 84:if(v){e.next=87;break}return this.error({statusCode:404,message:"This page could not be found"}),e.abrupt("return",r());case 87:return e.next=89,Promise.all(h.map(function(e,i){if(e._path=I(t.matched[f[i]].path)(t.params),e._dataRefresh=!1,A._pathChanged&&A._queryChanged||e._path!==He[i])e._dataRefresh=!0;else if(!A._pathChanged&&A._queryChanged){var n=e.options.watchQuery;!0===n?e._dataRefresh=!0:Array.isArray(n)&&(e._dataRefresh=n.some(function(e){return A._diffQuery[e]}))}if(!A._hadError&&A._isMounted&&!e._dataRefresh)return Promise.resolve();var r=[],o=e.options.asyncData&&"function"==typeof e.options.asyncData,c=!!e.options.fetch,l=o&&c?30:45;if(o){var h=M(e.options.asyncData,Ue.context).then(function(t){j(e,t),A.$loading.increase&&A.$loading.increase(l)});r.push(h)}if(A.$loading.manual=!1===e.options.loading,c){var p=e.options.fetch(Ue.context);p&&(p instanceof Promise||"function"==typeof p.then)||(p=Promise.resolve(p)),p.then(function(e){A.$loading.increase&&A.$loading.increase(l)}),r.push(p)}return Promise.all(r)}));case 89:c||(this.$loading.finish&&!this.$loading.manual&&this.$loading.finish(),r()),e.next=106;break;case 92:if(e.prev=92,e.t2=e.catch(27),"ERR_REDIRECT"!==($=e.t2||{}).message){e.next=97;break}return e.abrupt("return",this.$nuxt.$emit("routeChanged",t,n,$));case 97:return He=[],E($),"function"==typeof(P=be.layout)&&(P=P(Ue.context)),e.next=103,this.loadLayout(P);case 103:this.error($),this.$nuxt.$emit("routeChanged",t,n,$),r();case 106:case"end":return e.stop()}},e,this,[[27,92],[46,80],[50,66,70,78],[71,,73,77]])}))).apply(this,arguments)}function et(e,t){S(e,function(e,t,n,r){return"object"!==o(e)||e.options||((e=l.a.extend(e))._Ctor=e,n.components[r]=e),e})}function tt(e){this._hadError&&this._dateLastError===this.$options.nuxt.dateErr&&this.error();var t=this.$options.nuxt.err?be.layout:e.matched[0].components.default.options.layout;"function"==typeof t&&(t=t(Ue.context)),this.setLayout(t)}function nt(e,t){var n=this;!1===this._pathChanged&&!1===this._queryChanged||l.a.nextTick(function(){var t=[],r=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return Array.prototype.concat.apply([],e.matched.map(function(e,n){return Object.keys(e.instances).map(function(r){return t&&t.push(n),e.instances[r]})}))}(e,t),o=O(e,t);r.forEach(function(e,i){if(e&&e.constructor._dataRefresh&&o[i]===e.constructor&&"function"==typeof e.constructor.options.data){var t=e.constructor.options.data.call(e);for(var n in t)l.a.set(e.$data,n,t[n])}}),tt.call(n,e)})}function at(e){window.onNuxtReadyCbs.forEach(function(t){"function"==typeof t&&t(e)}),"function"==typeof window._onNuxtLoaded&&window._onNuxtLoaded(e),ze.afterEach(function(t,n){l.a.nextTick(function(){return e.$nuxt.$emit("routeChanged",t,n)})})}function it(){return(it=Object(c.a)(regeneratorRuntime.mark(function e(t){var n,r,o,f;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return Ue=t.app,ze=t.router,e.next=4,Promise.all((path=void 0,path=D((h=ze).options.base,h.options.mode),S(h.match(path),function(){var e=Object(c.a)(regeneratorRuntime.mark(function e(t,n,r,o,c){var l;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("function"!=typeof t||t.options){e.next=4;break}return e.next=3,t();case 3:t=e.sent;case 4:return l=Ge(A(t),Je.data?Je.data[c]:null),r.components[o]=l,e.abrupt("return",l);case 7:case"end":return e.stop()}},e)}));return function(t,n,r,o,c){return e.apply(this,arguments)}}())));case 4:return n=e.sent,r=new l.a(Ue),o=Je.layout||"default",e.next=9,r.loadLayout(o);case 9:if(r.setLayout(o),f=function(){r.$mount("#__nuxt"),l.a.nextTick(function(){at(r)})},r.setTransitions=r.$options.nuxt.setTransitions.bind(r),n.length&&(r.setTransitions(Ke(n,ze.currentRoute)),He=ze.currentRoute.matched.map(function(e){return I(e.path)(ze.currentRoute.params)})),r.$loading={},Je.error&&r.error(Je.error),ze.beforeEach(Qe.bind(r)),ze.beforeEach(Xe.bind(r)),ze.afterEach(et),ze.afterEach(nt.bind(r)),!Je.serverRendered){e.next=22;break}return f(),e.abrupt("return");case 22:Xe.call(r,ze.currentRoute,ze.currentRoute,function(path){if(!path)return et(ze.currentRoute,ze.currentRoute),tt.call(r,ze.currentRoute),void f();ze.push(path,function(){return f()},function(e){if(!e)return f();We(e)})});case 23:case"end":return e.stop()}var h,path},e)}))).apply(this,arguments)}(function(e){return De.apply(this,arguments)})().then(function(e){return it.apply(this,arguments)}).catch(function(e){e.message="[nuxt] Error while mounting app: "+e.message,We(e)})},37:function(e,t,n){},38:function(e,t,n){},39:function(e,t,n){},40:function(e,t,n){"use strict";(function(e){t.a={data:function(){return{brand:e.env.BRAND,isMenuActive:!1}},components:{}}}).call(this,n(65))},41:function(e,t,n){},42:function(e,t,n){},43:function(e,t,n){},44:function(e,t,n){},5:function(e,t,n){"use strict";function r(e,t,n,r,o,c,l){try{var f=e[c](l),h=f.value}catch(e){return void n(e)}f.done?t(h):Promise.resolve(h).then(r,o)}function o(e){return function(){var t=this,n=arguments;return new Promise(function(o,c){var l=e.apply(t,n);function f(e){r(l,o,c,f,h,"next",e)}function h(e){r(l,o,c,f,h,"throw",e)}f(void 0)})}}n.d(t,"a",function(){return o})},89:function(e,t,n){"use strict";var r={name:"NoSsr",functional:!0,props:{placeholder:String,placeholderTag:{type:String,default:"div"}},render:function(e,t){var n=t.parent,r=t.slots,o=t.props,c=r(),l=c.default;void 0===l&&(l=[]);var f=c.placeholder;return n._isMounted?l:(n.$once("hook:mounted",function(){n.$forceUpdate()}),o.placeholderTag&&(o.placeholder||f)?e(o.placeholderTag,{class:["no-ssr-placeholder"]},o.placeholder||f):l.length>0?l.map(function(){return e(!1)}):e(!1))}};e.exports=r},90:function(e){e.exports=[{url:"/blog/2018/2/13/grinding-machine-scenario",title:"PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed",date:"2018-02-13T00:00:00.000Z"},{url:"/blog/2018/3/26/Release-0.2.0",title:"Unide 0.2.0 released",date:"2018-03-26T10:39:00.000Z"},{url:"/blog/2018/9/4/Template-for-PPMP-transformation",title:"PPMP Use Cases: Template for PPMP transformation",date:"2018-09-04T00:00:00.000Z"},{url:"/blog/2019/3/1/Version-3",title:"PPMP Version 3 release candidate",date:"2019-03-01T00:00:00.000Z"},{url:"/blog/2019/11/26/Version-3-final",title:"PPMP Version 3 final",date:"2019-11-26T00:00:00.000Z"}]},91:function(e){e.exports=[{year:"2016",month:"9",url:"/blog/2016/9",count:4},{year:"2017",month:"3",url:"/blog/2017/3",count:1},{year:"2017",month:"6",url:"/blog/2017/6",count:2},{year:"2017",month:"10",url:"/blog/2017/10",count:2},{year:"2018",month:"1",url:"/blog/2018/1",count:1},{year:"2018",month:"2",url:"/blog/2018/2",count:2},{year:"2018",month:"3",url:"/blog/2018/3",count:1},{year:"2018",month:"9",url:"/blog/2018/9",count:1},{year:"2019",month:"3",url:"/blog/2019/3",count:1},{year:"2019",month:"11",url:"/blog/2019/11",count:1}]},92:function(e,t,n){e.exports=n(144)}},[[92,18,4]]]);
\ No newline at end of file
diff --git a/files/5d7aa3d4daa5e74bc8bd.js b/files/96a16b4ea8ad044695c6.js
similarity index 97%
rename from files/5d7aa3d4daa5e74bc8bd.js
rename to files/96a16b4ea8ad044695c6.js
index a0034a2..426df1d 100644
--- a/files/5d7aa3d4daa5e74bc8bd.js
+++ b/files/96a16b4ea8ad044695c6.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{362:function(e,t,r){"use strict";r.r(t);var n=r(153),m=(r(61),r(11)),o=(r(21),r(150),r(147)),c=r.n(o),l=r(149),d=r(155),v=r.n(d),f=r(159),_={head:function(){return{title:"Specification for measurement messages"}},created:function(){var e=this,t=new Date,r="a4927dad-58d4-4580-b460-79cefd56775b";this.$static={message:{"content-spec":"urn:spec://eclipse.org/unide/measurement-message#v2",device:{deviceID:r},measurements:[{ts:t.toISOString(),series:{$_time:[0,23,24],temperature:[45.4231,46.4222,44.2432]}}]},complexMessage:{"content-spec":"urn:spec://eclipse.org/unide/measurement-message#v2",device:{deviceID:r,operationalStatus:"MM",metaData:{swVersion:"2.0.3.13",swBuildID:"41535"}},part:{partTypeID:"F00VH07328",partID:"420003844",result:"OK",code:"HUH289",metaData:{lotID:"845849",toolID:"32324-432143"}},measurements:[{ts:t.toISOString(),code:"190ABT",result:"OK",series:{$_time:[0,23,24],temperature:[45.4231,46.4222,44.2432]},limits:{temperature:{lowerError:40,lowerWarn:45,upperError:50,upperWarn:47.5}}},{ts:new Date(t.valueOf()-5e3).toISOString(),series:{$_time:[0,130,2633],pressure:[52.4,46.32,44.2432]}}]}},this.$static.examples=Object.entries(Object(m.a)({},["content-spec","device","device.deviceID","device.metaData","device.operationalStatus","measurements","measurements[0].code","measurements[0].limits","measurements[0].result","measurements[0].series","measurements[0].ts","part","part.code","part.metaData","part.partID","part.partTypeID","part.result"].reduce(function(e,t){return e[t.replace(/(^|\.)/g,"$1properties.").replace(/\[[^]]*]/g,".items")]=t,e},{'properties.measurements.items.properties.limits.patternProperties["^[^$]+"]':"measurements[0].limits.temperature",'properties.measurements.items.properties.series.patternProperties["^[^$]+"]':"measurements[0].series.temperature"}),["lowerError","lowerWarn","target","upperError","upperWarn"].reduce(function(e,t){return e['properties.measurements.items.properties.limits.patternProperties["^[^$]+"].properties.'.concat(t)]="measurements[0].limits.temperature.".concat(t),e},{}))).reduce(function(t,r){var m=Object(n.a)(r,2),o=m[0],path=m[1],c=v()(e.$static.message,path)||v()(e.$static.complexMessage,path);return c&&(t[o]=[c]),t},{})},filters:{stringify:function(e){return JSON.stringify(e," ",2)}},components:{card:l.a,prism:c.a,schemaDetail:f.a}},h=r(2),component=Object(h.a)(_,function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"measurement-message content"},[e._m(0),e._v(" "),r("p",[e._v("The measurement message is the format to exchange simple (non-structured, non-complex ) measurement data. It also allows to transport multiple measurement data (eg. values over time), called 'series'.")]),e._v(" "),r("img",{staticClass:"is-centered",attrs:{src:"images/specification/v2/measurementPayload.svg",alt:"Class diagram of the measurement payload",title:"Class diagram of the measurement payload"}}),e._v(" "),r("schemaDetail",{attrs:{type:"v2/measurement",examples:e.$static.examples}},[r("card",{attrs:{collapsed:!0}},[r("template",{slot:"header"},[e._v("\n        Minimal message example\n      ")]),e._v(" "),r("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.message)))])],2),e._v(" "),r("card",{attrs:{collapsed:!0}},[r("template",{slot:"header"},[e._v("\n        Multiple message example\n      ")]),e._v(" "),r("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.complexMessage)))])],2)],1)],1)},[function(){var e=this.$createElement,t=this._self._c||e;return t("h1",[t("a",{attrs:{id:"Measurement-Payload",title:"Measurement Payload"}}),this._v("\n    Measurement Payload\n  ")])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{364:function(e,t,r){"use strict";r.r(t);var n=r(153),m=(r(61),r(11)),o=(r(21),r(150),r(147)),c=r.n(o),l=r(149),d=r(155),v=r.n(d),f=r(159),_={head:function(){return{title:"Specification for measurement messages"}},created:function(){var e=this,t=new Date,r="a4927dad-58d4-4580-b460-79cefd56775b";this.$static={message:{"content-spec":"urn:spec://eclipse.org/unide/measurement-message#v2",device:{deviceID:r},measurements:[{ts:t.toISOString(),series:{$_time:[0,23,24],temperature:[45.4231,46.4222,44.2432]}}]},complexMessage:{"content-spec":"urn:spec://eclipse.org/unide/measurement-message#v2",device:{deviceID:r,operationalStatus:"MM",metaData:{swVersion:"2.0.3.13",swBuildID:"41535"}},part:{partTypeID:"F00VH07328",partID:"420003844",result:"OK",code:"HUH289",metaData:{lotID:"845849",toolID:"32324-432143"}},measurements:[{ts:t.toISOString(),code:"190ABT",result:"OK",series:{$_time:[0,23,24],temperature:[45.4231,46.4222,44.2432]},limits:{temperature:{lowerError:40,lowerWarn:45,upperError:50,upperWarn:47.5}}},{ts:new Date(t.valueOf()-5e3).toISOString(),series:{$_time:[0,130,2633],pressure:[52.4,46.32,44.2432]}}]}},this.$static.examples=Object.entries(Object(m.a)({},["content-spec","device","device.deviceID","device.metaData","device.operationalStatus","measurements","measurements[0].code","measurements[0].limits","measurements[0].result","measurements[0].series","measurements[0].ts","part","part.code","part.metaData","part.partID","part.partTypeID","part.result"].reduce(function(e,t){return e[t.replace(/(^|\.)/g,"$1properties.").replace(/\[[^]]*]/g,".items")]=t,e},{'properties.measurements.items.properties.limits.patternProperties["^[^$]+"]':"measurements[0].limits.temperature",'properties.measurements.items.properties.series.patternProperties["^[^$]+"]':"measurements[0].series.temperature"}),["lowerError","lowerWarn","target","upperError","upperWarn"].reduce(function(e,t){return e['properties.measurements.items.properties.limits.patternProperties["^[^$]+"].properties.'.concat(t)]="measurements[0].limits.temperature.".concat(t),e},{}))).reduce(function(t,r){var m=Object(n.a)(r,2),o=m[0],path=m[1],c=v()(e.$static.message,path)||v()(e.$static.complexMessage,path);return c&&(t[o]=[c]),t},{})},filters:{stringify:function(e){return JSON.stringify(e," ",2)}},components:{card:l.a,prism:c.a,schemaDetail:f.a}},h=r(2),component=Object(h.a)(_,function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"measurement-message content"},[e._m(0),e._v(" "),r("p",[e._v("The measurement message is the format to exchange simple (non-structured, non-complex ) measurement data. It also allows to transport multiple measurement data (eg. values over time), called 'series'.")]),e._v(" "),r("img",{staticClass:"is-centered",attrs:{src:"images/specification/v2/measurementPayload.svg",alt:"Class diagram of the measurement payload",title:"Class diagram of the measurement payload"}}),e._v(" "),r("schemaDetail",{attrs:{type:"v2/measurement",examples:e.$static.examples}},[r("card",{attrs:{collapsed:!0}},[r("template",{slot:"header"},[e._v("\n        Minimal message example\n      ")]),e._v(" "),r("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.message)))])],2),e._v(" "),r("card",{attrs:{collapsed:!0}},[r("template",{slot:"header"},[e._v("\n        Multiple message example\n      ")]),e._v(" "),r("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.complexMessage)))])],2)],1)],1)},[function(){var e=this.$createElement,t=this._self._c||e;return t("h1",[t("a",{attrs:{id:"Measurement-Payload",title:"Measurement Payload"}}),this._v("\n    Measurement Payload\n  ")])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
diff --git a/files/f86c19a025da8965dcb8.js b/files/9d2a6552d4d20b0139b1.js
similarity index 97%
rename from files/f86c19a025da8965dcb8.js
rename to files/9d2a6552d4d20b0139b1.js
index a17b0aa..ad3d289 100644
--- a/files/f86c19a025da8965dcb8.js
+++ b/files/9d2a6552d4d20b0139b1.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{368:function(e,t,n){"use strict";n.r(t);var c=n(153),r=(n(61),n(11)),o=(n(21),n(150),n(147)),l=n.n(o),m=n(149),d=n(155),h=n.n(d),v=n(159),f={head:function(){return{title:"Specification for machine messages"}},created:function(){var e=this,t=new Date,n="a4927dad-58d4-4580-b460-79cefd56775b";this.$static={message:{"content-spec":"urn:spec://eclipse.org/unide/machine-message#v2",device:{deviceID:n},messages:[{ts:t.toISOString(),code:"190ABT"}]},multipleMachineMessages:{"content-spec":"urn:spec://eclipse.org/unide/machine-message#v2",device:{deviceID:n,operationalStatus:"normal",metaData:{swVersion:"2.0.3.13",swBuildID:"41535"}},messages:[{origin:"sensor-id-992.2393.22",ts:t.toISOString(),type:"DEVICE",severity:"HIGH",code:"190ABT",title:"control board damaged",description:"Electronic control board or its electrical connections are damaged",hint:"Check the control board",metaData:{firmware:"20130304_22.020"}},{ts:new Date(t.valueOf()+100).toISOString(),type:"TECHNICAL_INFO",severity:"HIGH",code:"33-02",title:"Disk size limit reached",description:"Disk size has reached limit. Unable to write log files."}]}},this.$static.examples=Object.entries(Object(r.a)({},["content-spec","device","device.deviceID","device.metaData","device.operationalStatus","messages","messages[0].ts","messages[0].origin","messages[0].type","messages[0].severity","messages[0].code","messages[0].title","messages[0].description","messages[0].hint","messages[0].metaData"].reduce(function(e,t){return e[t.replace(/(^|\.)/g,"$1properties.").replace(/\[[^]]*]/g,".items")]=t,e},{}))).reduce(function(t,n){var r=Object(c.a)(n,2),o=r[0],path=r[1],l=h()(e.$static.message,path)||h()(e.$static.multipleMachineMessages,path);return l&&(t[o]=[l]),t},{})},filters:{stringify:function(e){return JSON.stringify(e," ",2)}},components:{card:m.a,prism:l.a,schemaDetail:v.a}},_=n(2),component=Object(_.a)(f,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"machine-message content"},[e._m(0),e._v(" "),n("p",[e._v("The main purpose of the machine message format is to allow devices and integrators to send messages containing an interpretation of measurement data or status.")]),e._v(" "),n("img",{staticClass:"is-centered",attrs:{src:"images/specification/v2/messagePayload.svg",alt:"Class diagram of the Machine Message payload",title:"Class diagram of the Machine Message payload"}}),e._v(" "),n("schemaDetail",{attrs:{type:"v2/message",examples:e.$static.examples}},[n("card",{attrs:{collapsed:!0}},[n("template",{slot:"header"},[e._v("\n        Minimal message example\n      ")]),e._v(" "),n("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.message)))])],2),e._v(" "),n("card",{attrs:{collapsed:!0}},[n("template",{slot:"header"},[e._v("\n        Multiple message example\n      ")]),e._v(" "),n("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.multipleMachineMessages)))])],2)],1)],1)},[function(){var e=this.$createElement,t=this._self._c||e;return t("h1",[t("a",{attrs:{id:"Message-Payload",title:"Machine Message payload"}}),this._v("\n    Machine Message Payload\n  ")])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{363:function(e,t,n){"use strict";n.r(t);var c=n(153),r=(n(61),n(11)),o=(n(21),n(150),n(147)),l=n.n(o),m=n(149),d=n(155),h=n.n(d),v=n(159),f={head:function(){return{title:"Specification for machine messages"}},created:function(){var e=this,t=new Date,n="a4927dad-58d4-4580-b460-79cefd56775b";this.$static={message:{"content-spec":"urn:spec://eclipse.org/unide/machine-message#v2",device:{deviceID:n},messages:[{ts:t.toISOString(),code:"190ABT"}]},multipleMachineMessages:{"content-spec":"urn:spec://eclipse.org/unide/machine-message#v2",device:{deviceID:n,operationalStatus:"normal",metaData:{swVersion:"2.0.3.13",swBuildID:"41535"}},messages:[{origin:"sensor-id-992.2393.22",ts:t.toISOString(),type:"DEVICE",severity:"HIGH",code:"190ABT",title:"control board damaged",description:"Electronic control board or its electrical connections are damaged",hint:"Check the control board",metaData:{firmware:"20130304_22.020"}},{ts:new Date(t.valueOf()+100).toISOString(),type:"TECHNICAL_INFO",severity:"HIGH",code:"33-02",title:"Disk size limit reached",description:"Disk size has reached limit. Unable to write log files."}]}},this.$static.examples=Object.entries(Object(r.a)({},["content-spec","device","device.deviceID","device.metaData","device.operationalStatus","messages","messages[0].ts","messages[0].origin","messages[0].type","messages[0].severity","messages[0].code","messages[0].title","messages[0].description","messages[0].hint","messages[0].metaData"].reduce(function(e,t){return e[t.replace(/(^|\.)/g,"$1properties.").replace(/\[[^]]*]/g,".items")]=t,e},{}))).reduce(function(t,n){var r=Object(c.a)(n,2),o=r[0],path=r[1],l=h()(e.$static.message,path)||h()(e.$static.multipleMachineMessages,path);return l&&(t[o]=[l]),t},{})},filters:{stringify:function(e){return JSON.stringify(e," ",2)}},components:{card:m.a,prism:l.a,schemaDetail:v.a}},_=n(2),component=Object(_.a)(f,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"machine-message content"},[e._m(0),e._v(" "),n("p",[e._v("The main purpose of the machine message format is to allow devices and integrators to send messages containing an interpretation of measurement data or status.")]),e._v(" "),n("img",{staticClass:"is-centered",attrs:{src:"images/specification/v2/messagePayload.svg",alt:"Class diagram of the Machine Message payload",title:"Class diagram of the Machine Message payload"}}),e._v(" "),n("schemaDetail",{attrs:{type:"v2/message",examples:e.$static.examples}},[n("card",{attrs:{collapsed:!0}},[n("template",{slot:"header"},[e._v("\n        Minimal message example\n      ")]),e._v(" "),n("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.message)))])],2),e._v(" "),n("card",{attrs:{collapsed:!0}},[n("template",{slot:"header"},[e._v("\n        Multiple message example\n      ")]),e._v(" "),n("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.multipleMachineMessages)))])],2)],1)],1)},[function(){var e=this.$createElement,t=this._self._c||e;return t("h1",[t("a",{attrs:{id:"Message-Payload",title:"Machine Message payload"}}),this._v("\n    Machine Message Payload\n  ")])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
diff --git a/files/14bc2d8913e01b8f6783.js b/files/a195a9468a7b0964153f.js
similarity index 61%
rename from files/14bc2d8913e01b8f6783.js
rename to files/a195a9468a7b0964153f.js
index f5894b3..5fd5c85 100644
--- a/files/14bc2d8913e01b8f6783.js
+++ b/files/a195a9468a7b0964153f.js
@@ -1 +1 @@
-!function(e){function t(data){for(var t,n,c=data[0],o=data[1],l=data[2],i=0,h=[];i<c.length;i++)n=c[i],d[n]&&h.push(d[n][0]),d[n]=0;for(t in o)Object.prototype.hasOwnProperty.call(o,t)&&(e[t]=o[t]);for(v&&v(data);h.length;)h.shift()();return f.push.apply(f,l||[]),r()}function r(){for(var e,i=0;i<f.length;i++){for(var t=f[i],r=!0,n=1;n<t.length;n++){var c=t[n];0!==d[c]&&(r=!1)}r&&(f.splice(i--,1),e=o(o.s=t[0]))}return e}var n={},c={18:0},d={18:0},f=[];function o(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,o),r.l=!0,r.exports}o.e=function(e){var t=[];c[e]?t.push(c[e]):0!==c[e]&&{0:1,5:1,6:1,7:1,8:1,10:1}[e]&&t.push(c[e]=new Promise(function(t,r){for(var n={0:"a2e27af4b290334c2591",1:"31d6cfe0d16ae931b73c",2:"31d6cfe0d16ae931b73c",5:"08ee945502042ce842dc",6:"633c75f24cbc4500f5f7",7:"d0fdea7b1fe36ac7586f",8:"2400600c1c5793c50ab4",9:"31d6cfe0d16ae931b73c",10:"a24872390d726b28f88d",11:"31d6cfe0d16ae931b73c",12:"31d6cfe0d16ae931b73c",13:"31d6cfe0d16ae931b73c",14:"31d6cfe0d16ae931b73c",15:"31d6cfe0d16ae931b73c",16:"31d6cfe0d16ae931b73c",17:"31d6cfe0d16ae931b73c",19:"31d6cfe0d16ae931b73c",20:"31d6cfe0d16ae931b73c",21:"31d6cfe0d16ae931b73c",22:"31d6cfe0d16ae931b73c",23:"31d6cfe0d16ae931b73c",24:"31d6cfe0d16ae931b73c"}[e]+".css",d=o.p+n,f=document.getElementsByTagName("link"),i=0;i<f.length;i++){var l=(v=f[i]).getAttribute("data-href")||v.getAttribute("href");if("stylesheet"===v.rel&&(l===n||l===d))return t()}var h=document.getElementsByTagName("style");for(i=0;i<h.length;i++){var v;if((l=(v=h[i]).getAttribute("data-href"))===n||l===d)return t()}var m=document.createElement("link");m.rel="stylesheet",m.type="text/css",m.onload=t,m.onerror=function(t){var n=t&&t.target&&t.target.src||d,f=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");f.request=n,delete c[e],m.parentNode.removeChild(m),r(f)},m.href=d,document.getElementsByTagName("head")[0].appendChild(m)}).then(function(){c[e]=0}));var r=d[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise(function(t,n){r=d[e]=[t,n]});t.push(r[2]=n);var f,script=document.createElement("script");script.charset="utf-8",script.timeout=120,o.nc&&script.setAttribute("nonce",o.nc),script.src=function(e){return o.p+""+{0:"de162ef814559a2126c1",1:"335477b030d41a005fb6",2:"73260da83e16c5402b7e",5:"c3e469380ccd51a92bb6",6:"1cf0d23982851c579fa1",7:"7e5b30c8046b1e015c6b",8:"ab8f3355d1ddf7500408",9:"a5b69b3e468a14b1e81c",10:"5572a70754dbaa365e55",11:"3bd3bd5c3610dfbadcf7",12:"f86c19a025da8965dcb8",13:"5d7aa3d4daa5e74bc8bd",14:"502370205f0b3be987af",15:"b31d3354e22c4e6855e0",16:"ba289679d90095018de3",17:"9e2d6fa9e75e3f9efd77",19:"dc7c6da0365f033f92d7",20:"4c38bba83bbf77de5330",21:"4ac5d3506ba14a8960e0",22:"1233d93532a2b1a688c9",23:"52acf122fd9801427962",24:"31ffb65633ab48546950"}[e]+".js"}(e),f=function(t){script.onerror=script.onload=null,clearTimeout(l);var r=d[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src,f=new Error("Loading chunk "+e+" failed.\n("+n+": "+c+")");f.type=n,f.request=c,r[1](f)}d[e]=void 0}};var l=setTimeout(function(){f({type:"timeout",target:script})},12e4);script.onerror=script.onload=f,document.head.appendChild(script)}return Promise.all(t)},o.m=e,o.c=n,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(r,n,function(t){return e[t]}.bind(null,n));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(object,e){return Object.prototype.hasOwnProperty.call(object,e)},o.p="/unide/files/",o.oe=function(e){throw console.error(e),e};var l=window.webpackJsonp=window.webpackJsonp||[],h=l.push.bind(l);l.push=t,l=l.slice();for(var i=0;i<l.length;i++)t(l[i]);var v=h;r()}([]);
\ No newline at end of file
+!function(e){function t(data){for(var t,n,d=data[0],o=data[1],l=data[2],i=0,h=[];i<d.length;i++)n=d[i],c[n]&&h.push(c[n][0]),c[n]=0;for(t in o)Object.prototype.hasOwnProperty.call(o,t)&&(e[t]=o[t]);for(v&&v(data);h.length;)h.shift()();return f.push.apply(f,l||[]),r()}function r(){for(var e,i=0;i<f.length;i++){for(var t=f[i],r=!0,n=1;n<t.length;n++){var d=t[n];0!==c[d]&&(r=!1)}r&&(f.splice(i--,1),e=o(o.s=t[0]))}return e}var n={},d={18:0},c={18:0},f=[];function o(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,o),r.l=!0,r.exports}o.e=function(e){var t=[];d[e]?t.push(d[e]):0!==d[e]&&{0:1,5:1,6:1,7:1,8:1,10:1}[e]&&t.push(d[e]=new Promise(function(t,r){for(var n={0:"3eb6ece015ac272cf6b8",1:"31d6cfe0d16ae931b73c",2:"31d6cfe0d16ae931b73c",5:"08ee945502042ce842dc",6:"633c75f24cbc4500f5f7",7:"d0fdea7b1fe36ac7586f",8:"2400600c1c5793c50ab4",9:"31d6cfe0d16ae931b73c",10:"a24872390d726b28f88d",11:"31d6cfe0d16ae931b73c",12:"31d6cfe0d16ae931b73c",13:"31d6cfe0d16ae931b73c",14:"31d6cfe0d16ae931b73c",15:"31d6cfe0d16ae931b73c",16:"31d6cfe0d16ae931b73c",17:"31d6cfe0d16ae931b73c",19:"31d6cfe0d16ae931b73c",20:"31d6cfe0d16ae931b73c",21:"31d6cfe0d16ae931b73c",22:"31d6cfe0d16ae931b73c",23:"31d6cfe0d16ae931b73c",24:"31d6cfe0d16ae931b73c"}[e]+".css",c=o.p+n,f=document.getElementsByTagName("link"),i=0;i<f.length;i++){var l=(v=f[i]).getAttribute("data-href")||v.getAttribute("href");if("stylesheet"===v.rel&&(l===n||l===c))return t()}var h=document.getElementsByTagName("style");for(i=0;i<h.length;i++){var v;if((l=(v=h[i]).getAttribute("data-href"))===n||l===c)return t()}var m=document.createElement("link");m.rel="stylesheet",m.type="text/css",m.onload=t,m.onerror=function(t){var n=t&&t.target&&t.target.src||c,f=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");f.request=n,delete d[e],m.parentNode.removeChild(m),r(f)},m.href=c,document.getElementsByTagName("head")[0].appendChild(m)}).then(function(){d[e]=0}));var r=c[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise(function(t,n){r=c[e]=[t,n]});t.push(r[2]=n);var f,script=document.createElement("script");script.charset="utf-8",script.timeout=120,o.nc&&script.setAttribute("nonce",o.nc),script.src=function(e){return o.p+""+{0:"42ea76d2884ad7b86a73",1:"335477b030d41a005fb6",2:"73260da83e16c5402b7e",5:"2918aa6661dd624eef70",6:"273ad16c0a5d62586f48",7:"5559b707095db7adf400",8:"30395b316d9140e79ffe",9:"0965add99e93e40b8e8f",10:"08afffd6ed19d05d9d58",11:"b0abdd2efe35cea7e6f8",12:"9d2a6552d4d20b0139b1",13:"96a16b4ea8ad044695c6",14:"09e057656ddeb65b6a85",15:"4891cfeb702e0143e870",16:"56b18d727e8153033d26",17:"e915e0c530b16a314b13",19:"dc7c6da0365f033f92d7",20:"4c38bba83bbf77de5330",21:"4ac5d3506ba14a8960e0",22:"1233d93532a2b1a688c9",23:"52acf122fd9801427962",24:"31ffb65633ab48546950"}[e]+".js"}(e),f=function(t){script.onerror=script.onload=null,clearTimeout(l);var r=c[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),d=t&&t.target&&t.target.src,f=new Error("Loading chunk "+e+" failed.\n("+n+": "+d+")");f.type=n,f.request=d,r[1](f)}c[e]=void 0}};var l=setTimeout(function(){f({type:"timeout",target:script})},12e4);script.onerror=script.onload=f,document.head.appendChild(script)}return Promise.all(t)},o.m=e,o.c=n,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(r,n,function(t){return e[t]}.bind(null,n));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(object,e){return Object.prototype.hasOwnProperty.call(object,e)},o.p="/unide/files/",o.oe=function(e){throw console.error(e),e};var l=window.webpackJsonp=window.webpackJsonp||[],h=l.push.bind(l);l.push=t,l=l.slice();for(var i=0;i<l.length;i++)t(l[i]);var v=h;r()}([]);
\ No newline at end of file
diff --git a/files/a5b69b3e468a14b1e81c.js b/files/a5b69b3e468a14b1e81c.js
deleted file mode 100644
index be8a698..0000000
--- a/files/a5b69b3e468a14b1e81c.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{358:function(e,t,n){"use strict";n.r(t);var r={layout:"sidebar"},o=n(2),component=Object(o.a)(r,function(){this.$createElement;this._self._c;return this._m(0)},[function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"proposal content"},[n("h1",[e._v("\n  What is Unide?\n  ")]),e._v(" "),n("p",[e._v("Noticeably in the recent years, there’s a continuous increase in demand, price pressure and complexity in manufacturing. Things need to move faster, be more flexible, and fulfill higher quality standards. Often, optimization in this regard is referred to as Production Performance Management (PPM). The basis for this optimization is information from the machines and devices related to a product, such as:")]),e._v(" "),n("ul",[n("li",[e._v("Torque and angle for a tightening process")]),e._v(" "),n("li",[e._v("Influx / efflux of throttle plate test station")]),e._v(" "),n("li",[e._v("Energy consumption of spindles in a cutting process")])]),e._v(" "),n("p",[e._v("Nowadays, brand new machines and software are often shipped with powerful communication capabilities. For older machines, smaller factories and SMEs (Small and Medium Enterprises), it can be a challenge to catch up with the complex IT standards that come along. In fact, sometimes the hardware itself imposes limits.")]),e._v(" "),n("p",[e._v("Nevertheless, in a manufacturing environment, monitoring makes most sense if there are no blind spots. To achieve that, upgrading machines and software is one option, retrofitting another. For the latter, the hurdle should be as low as possible. Yet, there should be a few guidelines for a one-way exchange of the most necessary information (machine messages, measurements):")]),e._v(" "),n("p",[e._v("The structure of the data shall be:")]),e._v(" "),n("ul",[n("li",[e._v("flexible enough to be carried via multiple protocols,"),n("br"),e._v("in order to not reinvent the wheel and leverage on existing technology")]),e._v(" "),n("li",[e._v("similar in each case,"),n("br"),e._v("to be able to use the same software to interpret the data")]),e._v(" "),n("li",[e._v("easily understandable,"),n("br"),e._v("so that implementation in a custom environment won’t be a hurdle")]),e._v(" "),n("li",[e._v("as simple as possible,"),n("br"),e._v("to not produce an opinionated framework")]),e._v(" "),n("li",[e._v("and yet containing enough information for the use cases,"),n("br"),e._v("to fulfill the functional requirements")])]),e._v(" "),n("p",[e._v("We decided the least common denominator of necessary information are the mandatory fields, common relevant information to be optional, and the possibility for further extension points through metadata.")]),e._v(" "),n("h2",[e._v("\n    Industry benefits of Unide\n  ")]),e._v(" "),n("p",[e._v("This open source project aims to make PPM affordable for smaller organizations by reducing cost and complexity of data communication. Through sample implementations of a simple information structure (Production Performance Management Protocol - PPMP) tailored to manufacturing environments, we want to encourage the community to use, share, and evolve this structure together.")]),e._v(" "),n("p",[e._v("PPMP has already been introduced as part of a PPM testbed at a medium-sized Bosch plant, working with many SMEs as partners and suppliers. Furthermore, this testbed aims to create an ecosystem which allows SMEs and larger companies to collaborate efficiently.")]),e._v(" "),n("p",[e._v("The PPMP takes an important role by ensuring interoperability between different types of devices and software. It is designed to gather and aggregate machine and sensor data from different devices. It focuses on defining the JSON payload which can be transferred via a variety of transports (REST, AMQP, MQTT). The primary goals of PPMP are:")]),e._v(" "),n("ol",[n("li",[e._v("Integrating devices (across domains; e.g. manufacturing or energy) for data aggregation and gathering purposes")]),e._v(" "),n("li",[e._v("Providing a very lightweight and easy-to-use solution for small and medium-sized enterprises (SMEs)")])]),e._v(" "),n("h1",[e._v("\n    Scope\n  ")]),e._v(" "),n("p",[e._v("The Eclipse Unide project publishes the current version of Production Performance Management Protocol (PPMP) and develops simple server/client implementations. The implementations store the payloads in a database and displays them through a simple user interface. Everyone can then use these samples for their custom condition monitoring applications.")]),e._v(" "),n("p",[e._v("The project will contain:")]),e._v(" "),n("p",[n("em",[e._v("PPMP Specification:")])]),e._v(" "),n("ul",[n("li",[e._v("Machine message and measurement interfaces")]),e._v(" "),n("li",[e._v("JSON based")]),e._v(" "),n("li",[e._v("Versioned")])]),e._v(" "),n("p",[n("em",[e._v("Client:")])]),e._v(" "),n("ul",[n("li",[e._v("Chrome / nw.js App")]),e._v(" "),n("li",[e._v("For Industry Machines and Devices")]),e._v(" "),n("li",[e._v("Node.js/Python client running on Raspberry Pi")])]),e._v(" "),n("p",[n("em",[e._v("Server:")])]),e._v(" "),n("ul",[n("li",[e._v("(REST) Server including persistence and simple data visualization")]),e._v(" "),n("li",[e._v("Multiple examples for different technologies")])]),e._v(" "),n("h1",[e._v("\n    Description\n  ")]),e._v(" "),n("p",[e._v("Eclipse Unide provides a lightweight Production Performance Management Protocol (PPMP) server-client implementations (using JSON, REST and other). The core of the protocol are two interface definitions:")]),e._v(" "),n("ul",[n("li",[e._v("PPMP Measurement Interface: This is a public REST API with the purpose of receiving time series and machine data.")]),e._v(" "),n("li",[e._v("PPMP Messages Interface: This is a public REST API with the purpose of receiving machine messages.")])]),e._v(" "),n("h1",[e._v("\n   Why Here?\n  ")]),e._v(" "),n("p",[e._v("The PPMP extends the existing Eclipse IoT world by providing an easy and lightweight format for gathering data from industry sensors and machines, focusing on normalizing time series and alert messages. It can be transported by protocols like REST, AMQP, MQTT. As PPMP, these technologies do also not require complex and expensive middleware nor do their systems cause additional license fees. Eclipse is an excellent platform for developing PPMP sample implementations and evolving the format hands-on with the community. In fact, it could even join forces with existing Eclipse IoT projects like "),n("a",{attrs:{href:"https://projects.eclipse.org/projects/iot.hono",target:"_blank",rel:"external"}},[e._v("Hono")]),e._v(", "),n("a",{attrs:{href:"https://www.eclipse.org/paho/",target:"_blank",rel:"external"}},[e._v("Paho")]),e._v(" or "),n("a",{attrs:{href:"https://www.eclipse.org/kura/",target:"_blank",rel:"external"}},[e._v("Kura")]),e._v(".")]),e._v(" "),n("h1",[e._v("Interested Parties")]),e._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"https://www.contact-software.com",target:"_blank",rel:"external"}},[e._v("CONTACT Software GmbH")])]),e._v(" "),n("li",[n("a",{attrs:{href:"http://www.balluff.com/",target:"_blank",rel:"external"}},[e._v("Balluff GmbH")])]),e._v(" "),n("li",[n("a",{attrs:{href:"http://sap.com/",target:"_blank",rel:"external"}},[e._v("SAP")]),e._v(", Industry Standards & Open Source")]),e._v(" "),n("li",[n("a",{attrs:{href:"http://www.tcs.com/",target:"_blank",rel:"external"}},[e._v("Tata Consultancy Services")]),e._v(", Internet of Things Group")]),e._v(" "),n("li",[n("a",{attrs:{href:"http://www.3ds.com/",target:"_blank",rel:"external"}},[e._v("Dassault Systèmes")])]),e._v(" "),n("li",[n("a",{attrs:{href:"http://www.cadis-engineering.de/",target:"_blank",rel:"external"}},[e._v("CADIS Service GmbH")])]),e._v(" "),n("li",[n("a",{attrs:{href:"http://www.egt.de/",target:"_blank",rel:"external"}},[e._v("EGT AG")])]),e._v(" "),n("li",[n("a",{attrs:{href:"http://www.klw.com/",target:"_blank",rel:"external"}},[e._v("KLW Karl Lutz GmbH")])]),e._v(" "),n("li",[n("a",{attrs:{href:"http://www.rampf-gruppe.de/",target:"_blank",rel:"external"}},[e._v("RAMPF Machine Systems GmbH & Co. KG")])]),e._v(" "),n("li",[n("a",{attrs:{href:"http://www.schmalz.com/",target:"_blank",rel:"external"}},[e._v("J. Schmalz GmbH")])]),e._v(" "),n("li",[n("a",{attrs:{href:"https://www.bosch-si.com/",target:"_blank",rel:"external"}},[e._v("Bosch Software Innovations GmbH")])])])])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
diff --git a/files/1750fa95f99b26cdec14.css b/files/aacbf5835f7143d93ae2.css
similarity index 100%
rename from files/1750fa95f99b26cdec14.css
rename to files/aacbf5835f7143d93ae2.css
diff --git a/files/b0abdd2efe35cea7e6f8.js b/files/b0abdd2efe35cea7e6f8.js
new file mode 100644
index 0000000..d18d1e6
--- /dev/null
+++ b/files/b0abdd2efe35cea7e6f8.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{369:function(e,n,t){"use strict";t.r(n);var r=t(2),component=Object(r.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"content"},[t("h1",[t("a",{attrs:{href:"#Communicating-Parties",title:"Communicating Parties"}}),e._v("\n    Communicating Parties\n  ")]),e._v(" "),t("p",[e._v("\n  Two parties are involved in a Production Performance Management Protocol message exchange: the sender and the receiver. The sender pushes a message to the receiver. Usually the sender is a machine or a sensor of a machine.\n  ")]),e._v(" "),t("p",[e._v("\n  The receiver waits for messages. It offers a API that allows for sending either measurement payloads or message payloads.\n  ")]),e._v(" "),t("p",[e._v("\n  The communication is unidirectional. Only the sender can contact the receiver and send messages. No feedback from receiver to sender is provided.\n  ")]),e._v(" "),t("img",{staticClass:"is-centered",attrs:{src:"images/collaborators_v2.svg",alt:"Overview Production Performance Management Protocol",title:"Overview Production Performance Management Protocol"}})])}],!1,null,null,null);n.default=component.exports}}]);
\ No newline at end of file
diff --git a/files/9e2d6fa9e75e3f9efd77.js b/files/e915e0c530b16a314b13.js
similarity index 98%
rename from files/9e2d6fa9e75e3f9efd77.js
rename to files/e915e0c530b16a314b13.js
index b297f74..aa7ea20 100644
--- a/files/9e2d6fa9e75e3f9efd77.js
+++ b/files/e915e0c530b16a314b13.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{363:function(e,t,r){"use strict";r.r(t);r(61);var o=r(153),n=r(11),c=(r(21),r(150),r(147)),m=r.n(c),l=r(149),d=r(155),f=r.n(d),h=r(159),v={head:function(){return{title:"Specification for process messages"}},created:function(){var e=this,t=new Date,r="a4927dad-58d4-4580-b460-79cefd56775b";this.$static={message:{"content-spec":"urn:spec://eclipse.org/unide/process-message#v3",device:{id:r},process:{ts:t.toISOString()},measurements:[{ts:new Date(t.valueOf()+100).toISOString(),series:{time:[0,23,24],force:[26,23,null],pressure:[100952.4,100946.32,100944.2432]}}]},complexMessage:{"content-spec":"urn:spec://eclipse.org/unide/process-message#v3",device:{id:r,mode:"auto",state:"OK",additionalData:{swVersion:"2.0.3.13",swBuildId:"41535"}},part:{code:"HUH289",id:"420003844",type:"SINGLE",typeId:"F00VH07328",result:"NOK",additionalData:{toolId:"32324-432143"}},process:{externalId:"b4927dad-58d4-4580-b460-79cefd56775b",program:{id:"1",lastChangedDate:"2002-05-30T09:30:10.123+02:00",name:"Programm 1"},result:"NOK",ts:t.toISOString(),additionalData:{escalation:"shift leader",maxDuration:"30min",shutoffPhase:"phase 2"}},measurements:[{code:"0000 EE01",context:{pressure:{limits:{upperError:103e3,lowerError:99e3,upperWarn:102e3,lowerWarn:1e5,target:100950},namespace:"https://mycompany.com/productvariants/5986",unit:"Pa"},force:{limits:{upperError:[29,27,26],lowerError:[23,21,20],upperWarn:[28.5,26.5,25.5],lowerWarn:[23.5,21.5,null],target:[26,24,23]}}},name:"heating up",phase:"phase 1",result:"OK",series:{force:[26,23,24],pressure:[100952.4,100946.32,100944.2432],temperature:[45.4243,null,44.2432]},specialValues:[{name:"turning point",value:{pressure:101530,force:50}},{name:"shutoffForce",time:24,value:{force:24,upperError:26,lowerError:22,upperWarn:25,lowerWarn:23,target:24}},{name:"shutoffPressure",time:24,value:{pressure:100950,upperError:103e3,lowerError:99e3}}],ts:new Date(t.valueOf()+100).toISOString()},{name:"processing",phase:"phase 2",result:"OK",series:{time:[0,23,24],temperature:[49.2,48.8,50]},ts:new Date(t.valueOf()+430).toISOString()}]}},this.$static.examples=Object.entries(Object(n.a)({},["content-spec","device","device.id","device.mode","device.additionalData","measurements","part","part.code","part.id","part.result","part.type","part.typeId","process","process.externalId","process.program","process.program.id","process.program.lastChangedDate","process.program.name","process.result","process.ts"].reduce(function(t,r){return t[e.schemafy(r)]=r,t},{"properties.measurements.allOf[0].items.properties.context":"measurements[0].context",'properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.unit':"measurements[0].context.pressure.unit",'properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.namespace':"measurements[0].context.pressure.namespace",'properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.limits.oneOf[0]':"measurements[0].context.pressure.limits",'properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.limits.oneOf[1]':"measurements[0].context.force.limits",'properties.measurements.allOf[0].items.properties.series.patternProperties["^[^$]+"]':"measurements[0].series.force"}),["code","result","series","series.time","ts"].reduce(function(t,r){return t["properties.measurements.allOf[0].items.".concat(e.schemafy(r))]="measurements[0].".concat(r),t},{}),["name","phase","specialValues","specialValues[1].time","specialValues[1].name","specialValues[1].value"].reduce(function(t,r){return t["properties.measurements.allOf[1].items.".concat(e.schemafy(r))]="measurements[0].".concat(r),t},{}),["lowerError","lowerWarn","target","upperError","upperWarn"].reduce(function(e,t){return e['properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.limits.oneOf[0].properties.'.concat(t)]="measurements[0].context.pressure.limits.".concat(t),e['properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.limits.oneOf[1].properties.'.concat(t)]="measurements[0].context.force.limits.".concat(t),e},{}))).reduce(function(t,r){var n=Object(o.a)(r,2),c=n[0],path=n[1],m=f()(e.$static.message,path)||f()(e.$static.complexMessage,path);return m?t[c]=[m]:console.error('no example provided in process-message for:\n"'.concat(c,'": "').concat(path,'"')),t},{})},filters:{stringify:function(e){return JSON.stringify(e," ",2)}},methods:{schemafy:function(e){return e.replace(/(^|\.)/g,"$1properties.").replace(/\[[^]]*]/g,".items")}},components:{card:l.a,prism:m.a,schemaDetail:h.a}},O=r(2),component=Object(O.a)(v,function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"process-message content"},[e._m(0),e._v(" "),r("p",[e._v("The process message is the format to exchange data out of discrete processes. It also allows to transport process information, part information and measurement data for each phase of the process.")]),e._v(" "),e._m(1),e._v(" "),r("schemaDetail",{attrs:{type:"v3/process",examples:e.$static.examples}},[r("card",{attrs:{collapsed:!0}},[r("template",{slot:"header"},[e._v("\n        Minimal message example\n      ")]),e._v(" "),r("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.message)))])],2),e._v(" "),r("card",{attrs:{collapsed:!0}},[r("template",{slot:"header"},[e._v("\n        Process message example\n      ")]),e._v(" "),r("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.complexMessage)))])],2)],1)],1)},[function(){var e=this.$createElement,t=this._self._c||e;return t("h1",[t("a",{attrs:{id:"Process-Payload",title:"Process Message payload"}}),this._v("\n    Process Payload\n  ")])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"diagram"},[t("img",{attrs:{src:"images/specification/v3/processPayload.svg",alt:"Class diagram of the Process message payload",title:"Class diagram of the Process Message payload"}})])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{368:function(e,t,r){"use strict";r.r(t);r(61);var o=r(153),n=r(11),c=(r(21),r(150),r(147)),m=r.n(c),l=r(149),d=r(155),f=r.n(d),h=r(159),v={head:function(){return{title:"Specification for process messages"}},created:function(){var e=this,t=new Date,r="a4927dad-58d4-4580-b460-79cefd56775b";this.$static={message:{"content-spec":"urn:spec://eclipse.org/unide/process-message#v3",device:{id:r},process:{ts:t.toISOString()},measurements:[{ts:new Date(t.valueOf()+100).toISOString(),series:{time:[0,23,24],force:[26,23,null],pressure:[100952.4,100946.32,100944.2432]}}]},complexMessage:{"content-spec":"urn:spec://eclipse.org/unide/process-message#v3",device:{id:r,mode:"auto",state:"OK",additionalData:{swVersion:"2.0.3.13",swBuildId:"41535"}},part:{code:"HUH289",id:"420003844",type:"SINGLE",typeId:"F00VH07328",result:"NOK",additionalData:{toolId:"32324-432143"}},process:{externalId:"b4927dad-58d4-4580-b460-79cefd56775b",program:{id:"1",lastChangedDate:"2002-05-30T09:30:10.123+02:00",name:"Programm 1"},result:"NOK",ts:t.toISOString(),additionalData:{escalation:"shift leader",maxDuration:"30min",shutoffPhase:"phase 2"}},measurements:[{code:"0000 EE01",context:{pressure:{limits:{upperError:103e3,lowerError:99e3,upperWarn:102e3,lowerWarn:1e5,target:100950},namespace:"https://mycompany.com/productvariants/5986",unit:"Pa"},force:{limits:{upperError:[29,27,26],lowerError:[23,21,20],upperWarn:[28.5,26.5,25.5],lowerWarn:[23.5,21.5,null],target:[26,24,23]}}},name:"heating up",phase:"phase 1",result:"OK",series:{force:[26,23,24],pressure:[100952.4,100946.32,100944.2432],temperature:[45.4243,null,44.2432]},specialValues:[{name:"turning point",value:{pressure:101530,force:50}},{name:"shutoffForce",time:24,value:{force:24,upperError:26,lowerError:22,upperWarn:25,lowerWarn:23,target:24}},{name:"shutoffPressure",time:24,value:{pressure:100950,upperError:103e3,lowerError:99e3}}],ts:new Date(t.valueOf()+100).toISOString()},{name:"processing",phase:"phase 2",result:"OK",series:{time:[0,23,24],temperature:[49.2,48.8,50]},ts:new Date(t.valueOf()+430).toISOString()}]}},this.$static.examples=Object.entries(Object(n.a)({},["content-spec","device","device.id","device.mode","device.additionalData","measurements","part","part.code","part.id","part.result","part.type","part.typeId","process","process.externalId","process.program","process.program.id","process.program.lastChangedDate","process.program.name","process.result","process.ts"].reduce(function(t,r){return t[e.schemafy(r)]=r,t},{"properties.measurements.allOf[0].items.properties.context":"measurements[0].context",'properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.unit':"measurements[0].context.pressure.unit",'properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.namespace':"measurements[0].context.pressure.namespace",'properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.limits.oneOf[0]':"measurements[0].context.pressure.limits",'properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.limits.oneOf[1]':"measurements[0].context.force.limits",'properties.measurements.allOf[0].items.properties.series.patternProperties["^[^$]+"]':"measurements[0].series.force"}),["code","result","series","series.time","ts"].reduce(function(t,r){return t["properties.measurements.allOf[0].items.".concat(e.schemafy(r))]="measurements[0].".concat(r),t},{}),["name","phase","specialValues","specialValues[1].time","specialValues[1].name","specialValues[1].value"].reduce(function(t,r){return t["properties.measurements.allOf[1].items.".concat(e.schemafy(r))]="measurements[0].".concat(r),t},{}),["lowerError","lowerWarn","target","upperError","upperWarn"].reduce(function(e,t){return e['properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.limits.oneOf[0].properties.'.concat(t)]="measurements[0].context.pressure.limits.".concat(t),e['properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.limits.oneOf[1].properties.'.concat(t)]="measurements[0].context.force.limits.".concat(t),e},{}))).reduce(function(t,r){var n=Object(o.a)(r,2),c=n[0],path=n[1],m=f()(e.$static.message,path)||f()(e.$static.complexMessage,path);return m?t[c]=[m]:console.error('no example provided in process-message for:\n"'.concat(c,'": "').concat(path,'"')),t},{})},filters:{stringify:function(e){return JSON.stringify(e," ",2)}},methods:{schemafy:function(e){return e.replace(/(^|\.)/g,"$1properties.").replace(/\[[^]]*]/g,".items")}},components:{card:l.a,prism:m.a,schemaDetail:h.a}},O=r(2),component=Object(O.a)(v,function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"process-message content"},[e._m(0),e._v(" "),r("p",[e._v("The process message is the format to exchange data out of discrete processes. It also allows to transport process information, part information and measurement data for each phase of the process.")]),e._v(" "),e._m(1),e._v(" "),r("schemaDetail",{attrs:{type:"v3/process",examples:e.$static.examples}},[r("card",{attrs:{collapsed:!0}},[r("template",{slot:"header"},[e._v("\n        Minimal message example\n      ")]),e._v(" "),r("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.message)))])],2),e._v(" "),r("card",{attrs:{collapsed:!0}},[r("template",{slot:"header"},[e._v("\n        Process message example\n      ")]),e._v(" "),r("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.complexMessage)))])],2)],1)],1)},[function(){var e=this.$createElement,t=this._self._c||e;return t("h1",[t("a",{attrs:{id:"Process-Payload",title:"Process Message payload"}}),this._v("\n    Process Payload\n  ")])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"diagram"},[t("img",{attrs:{src:"images/specification/v3/processPayload.svg",alt:"Class diagram of the Process message payload",title:"Class diagram of the Process Message payload"}})])}],!1,null,null,null);t.default=component.exports}}]);
\ No newline at end of file
diff --git a/files/posts/2017.json b/files/posts/2017.json
index 7d75d99..f4c0373 100644
--- a/files/posts/2017.json
+++ b/files/posts/2017.json
@@ -1 +1 @@
-[{"url":"/blog/2017/3/23/Unide-at-BCX","title":"Unide at Bosch Hackaton","date":"2017-03-23T17:00:00.000Z"},{"url":"/blog/2017/6/1/New-process-message-spec","title":"New PPMP-Specification for processes","date":"2017-06-01T00:00:00.000Z"},{"url":"/blog/2017/6/29/Validator-Online","title":"First PPMP-Validator Online","date":"2017-06-29T00:00:00.000Z"},{"url":"/blog/2017/10/6/DZone-article-published","title":"DZone article published","date":"2017-10-06T00:00:00.000Z"},{"url":"/blog/2017/10/19/i40-testbed-started","title":"Unide is part of Industry 4.0 Testbed","date":"2017-10-19T00:00:00.000Z"}]
\ No newline at end of file
+[{"url":"/blog/2017/3/23/Unide-at-BCX","title":"Unide at Bosch Hackaton","date":"2017-03-23T17:00:00.000Z"},{"url":"/blog/2017/6/1/New-process-message-spec","title":"New Production Performance Management Protocol-Specification for processes","date":"2017-06-01T00:00:00.000Z"},{"url":"/blog/2017/6/29/Validator-Online","title":"First Production Performance Management Protocol-Validator Online","date":"2017-06-29T00:00:00.000Z"},{"url":"/blog/2017/10/6/DZone-article-published","title":"DZone article published","date":"2017-10-06T00:00:00.000Z"},{"url":"/blog/2017/10/19/i40-testbed-started","title":"Unide is part of Industry 4.0 Testbed","date":"2017-10-19T00:00:00.000Z"}]
\ No newline at end of file
diff --git a/files/posts/2017/6.json b/files/posts/2017/6.json
index 83432f0..6b0d55c 100644
--- a/files/posts/2017/6.json
+++ b/files/posts/2017/6.json
@@ -1 +1 @@
-[{"url":"/blog/2017/6/1/New-process-message-spec","title":"New PPMP-Specification for processes","date":"2017-06-01T00:00:00.000Z"},{"url":"/blog/2017/6/29/Validator-Online","title":"First PPMP-Validator Online","date":"2017-06-29T00:00:00.000Z"}]
\ No newline at end of file
+[{"url":"/blog/2017/6/1/New-process-message-spec","title":"New Production Performance Management Protocol-Specification for processes","date":"2017-06-01T00:00:00.000Z"},{"url":"/blog/2017/6/29/Validator-Online","title":"First Production Performance Management Protocol-Validator Online","date":"2017-06-29T00:00:00.000Z"}]
\ No newline at end of file
diff --git a/files/posts/2017/6/1.json b/files/posts/2017/6/1.json
index e5f0c15..bb77912 100644
--- a/files/posts/2017/6/1.json
+++ b/files/posts/2017/6/1.json
@@ -1 +1 @@
-[{"url":"/blog/2017/6/1/New-process-message-spec","title":"New PPMP-Specification for processes","date":"2017-06-01T00:00:00.000Z"}]
\ No newline at end of file
+[{"url":"/blog/2017/6/1/New-process-message-spec","title":"New Production Performance Management Protocol-Specification for processes","date":"2017-06-01T00:00:00.000Z"}]
\ No newline at end of file
diff --git a/files/posts/2017/6/29.json b/files/posts/2017/6/29.json
index 3acf575..8f68fd9 100644
--- a/files/posts/2017/6/29.json
+++ b/files/posts/2017/6/29.json
@@ -1 +1 @@
-[{"url":"/blog/2017/6/29/Validator-Online","title":"First PPMP-Validator Online","date":"2017-06-29T00:00:00.000Z"}]
\ No newline at end of file
+[{"url":"/blog/2017/6/29/Validator-Online","title":"First Production Performance Management Protocol-Validator Online","date":"2017-06-29T00:00:00.000Z"}]
\ No newline at end of file
diff --git a/files/posts/2018.json b/files/posts/2018.json
index e5e5954..0d28910 100644
--- a/files/posts/2018.json
+++ b/files/posts/2018.json
@@ -1 +1 @@
-[{"url":"/blog/2018/1/26/New-website","title":"Updated Website","date":"2018-01-26T00:00:00.000Z"},{"url":"/blog/2018/2/11/Transform-PPMP-with-camel","title":"PPMP Use Cases: Simple Transformation with Apache Camel","date":"2018-02-11T00:00:00.000Z"},{"url":"/blog/2018/2/13/grinding-machine-scenario","title":"PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed","date":"2018-02-13T00:00:00.000Z"},{"url":"/blog/2018/3/26/Release-0.2.0","title":"Unide 0.2.0 released","date":"2018-03-26T10:39:00.000Z"},{"url":"/blog/2018/9/4/Template-for-PPMP-transformation","title":"PPMP Use Cases: Template for PPMP transformation","date":"2018-09-04T00:00:00.000Z"}]
\ No newline at end of file
+[{"url":"/blog/2018/1/26/New-website","title":"Updated Website","date":"2018-01-26T00:00:00.000Z"},{"url":"/blog/2018/2/11/Transform-PPMP-with-camel","title":"Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel","date":"2018-02-11T00:00:00.000Z"},{"url":"/blog/2018/2/13/grinding-machine-scenario","title":"Use Cases: Unide and the Eclipse Testbed","date":"2018-02-13T00:00:00.000Z"},{"url":"/blog/2018/3/26/Release-0.2.0","title":"Unide 0.2.0 released","date":"2018-03-26T10:39:00.000Z"},{"url":"/blog/2018/9/4/Template-for-PPMP-transformation","title":"Use Cases: Template for transformation","date":"2018-09-04T00:00:00.000Z"}]
\ No newline at end of file
diff --git a/files/posts/2018/2.json b/files/posts/2018/2.json
index 0da141d..c171179 100644
--- a/files/posts/2018/2.json
+++ b/files/posts/2018/2.json
@@ -1 +1 @@
-[{"url":"/blog/2018/2/11/Transform-PPMP-with-camel","title":"PPMP Use Cases: Simple Transformation with Apache Camel","date":"2018-02-11T00:00:00.000Z"},{"url":"/blog/2018/2/13/grinding-machine-scenario","title":"PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed","date":"2018-02-13T00:00:00.000Z"}]
\ No newline at end of file
+[{"url":"/blog/2018/2/11/Transform-PPMP-with-camel","title":"Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel","date":"2018-02-11T00:00:00.000Z"},{"url":"/blog/2018/2/13/grinding-machine-scenario","title":"Use Cases: Unide and the Eclipse Testbed","date":"2018-02-13T00:00:00.000Z"}]
\ No newline at end of file
diff --git a/files/posts/2018/2/11.json b/files/posts/2018/2/11.json
index 84bec11..9c6fa78 100644
--- a/files/posts/2018/2/11.json
+++ b/files/posts/2018/2/11.json
@@ -1 +1 @@
-[{"url":"/blog/2018/2/11/Transform-PPMP-with-camel","title":"PPMP Use Cases: Simple Transformation with Apache Camel","date":"2018-02-11T00:00:00.000Z"}]
\ No newline at end of file
+[{"url":"/blog/2018/2/11/Transform-PPMP-with-camel","title":"Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel","date":"2018-02-11T00:00:00.000Z"}]
\ No newline at end of file
diff --git a/files/posts/2018/2/13.json b/files/posts/2018/2/13.json
index 583aa55..a5281e6 100644
--- a/files/posts/2018/2/13.json
+++ b/files/posts/2018/2/13.json
@@ -1 +1 @@
-[{"url":"/blog/2018/2/13/grinding-machine-scenario","title":"PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed","date":"2018-02-13T00:00:00.000Z"}]
\ No newline at end of file
+[{"url":"/blog/2018/2/13/grinding-machine-scenario","title":"Use Cases: Unide and the Eclipse Testbed","date":"2018-02-13T00:00:00.000Z"}]
\ No newline at end of file
diff --git a/files/posts/2018/9.json b/files/posts/2018/9.json
index e0046c9..1d43324 100644
--- a/files/posts/2018/9.json
+++ b/files/posts/2018/9.json
@@ -1 +1 @@
-[{"url":"/blog/2018/9/4/Template-for-PPMP-transformation","title":"PPMP Use Cases: Template for PPMP transformation","date":"2018-09-04T00:00:00.000Z"}]
\ No newline at end of file
+[{"url":"/blog/2018/9/4/Template-for-PPMP-transformation","title":"Use Cases: Template for transformation","date":"2018-09-04T00:00:00.000Z"}]
\ No newline at end of file
diff --git a/files/posts/2018/9/4.json b/files/posts/2018/9/4.json
index e0046c9..1d43324 100644
--- a/files/posts/2018/9/4.json
+++ b/files/posts/2018/9/4.json
@@ -1 +1 @@
-[{"url":"/blog/2018/9/4/Template-for-PPMP-transformation","title":"PPMP Use Cases: Template for PPMP transformation","date":"2018-09-04T00:00:00.000Z"}]
\ No newline at end of file
+[{"url":"/blog/2018/9/4/Template-for-PPMP-transformation","title":"Use Cases: Template for transformation","date":"2018-09-04T00:00:00.000Z"}]
\ No newline at end of file
diff --git a/files/posts/2019.json b/files/posts/2019.json
index 3812134..6d66c9d 100644
--- a/files/posts/2019.json
+++ b/files/posts/2019.json
@@ -1 +1 @@
-[{"url":"/blog/2019/3/1/Version-3","title":"PPMP Version 3 release candidate","date":"2019-03-01T00:00:00.000Z"},{"url":"/blog/2019/11/26/Version-3-final","title":"PPMP Version 3 final","date":"2019-11-26T00:00:00.000Z"}]
\ No newline at end of file
+[{"url":"/blog/2019/3/1/Version-3","title":"Protocol Version 3 release candidate","date":"2019-03-01T00:00:00.000Z"},{"url":"/blog/2019/11/26/Version-3-final","title":"Protocol v3 final","date":"2019-11-26T00:00:00.000Z"}]
\ No newline at end of file
diff --git a/files/posts/2019/11.json b/files/posts/2019/11.json
index 7c3916c..f7aebb5 100644
--- a/files/posts/2019/11.json
+++ b/files/posts/2019/11.json
@@ -1 +1 @@
-[{"url":"/blog/2019/11/26/Version-3-final","title":"PPMP Version 3 final","date":"2019-11-26T00:00:00.000Z"}]
\ No newline at end of file
+[{"url":"/blog/2019/11/26/Version-3-final","title":"Protocol v3 final","date":"2019-11-26T00:00:00.000Z"}]
\ No newline at end of file
diff --git a/files/posts/2019/11/26.json b/files/posts/2019/11/26.json
index 7c3916c..f7aebb5 100644
--- a/files/posts/2019/11/26.json
+++ b/files/posts/2019/11/26.json
@@ -1 +1 @@
-[{"url":"/blog/2019/11/26/Version-3-final","title":"PPMP Version 3 final","date":"2019-11-26T00:00:00.000Z"}]
\ No newline at end of file
+[{"url":"/blog/2019/11/26/Version-3-final","title":"Protocol v3 final","date":"2019-11-26T00:00:00.000Z"}]
\ No newline at end of file
diff --git a/files/posts/2019/3.json b/files/posts/2019/3.json
index ce32ba4..2df3aec 100644
--- a/files/posts/2019/3.json
+++ b/files/posts/2019/3.json
@@ -1 +1 @@
-[{"url":"/blog/2019/3/1/Version-3","title":"PPMP Version 3 release candidate","date":"2019-03-01T00:00:00.000Z"}]
\ No newline at end of file
+[{"url":"/blog/2019/3/1/Version-3","title":"Protocol Version 3 release candidate","date":"2019-03-01T00:00:00.000Z"}]
\ No newline at end of file
diff --git a/files/posts/2019/3/1.json b/files/posts/2019/3/1.json
index ce32ba4..2df3aec 100644
--- a/files/posts/2019/3/1.json
+++ b/files/posts/2019/3/1.json
@@ -1 +1 @@
-[{"url":"/blog/2019/3/1/Version-3","title":"PPMP Version 3 release candidate","date":"2019-03-01T00:00:00.000Z"}]
\ No newline at end of file
+[{"url":"/blog/2019/3/1/Version-3","title":"Protocol Version 3 release candidate","date":"2019-03-01T00:00:00.000Z"}]
\ No newline at end of file
diff --git a/files/posts/DZone-article-published.json b/files/posts/DZone-article-published.json
index 0f5ac84..61bbce4 100644
--- a/files/posts/DZone-article-published.json
+++ b/files/posts/DZone-article-published.json
@@ -1 +1 @@
-{"name":"DZone-article-published","content":"<p>A new article about PPMP and the Eclipse Unide project was published at <a href=\"https://dzone.com/articles/eclipse-unide-a-way-to-establish-an-open-industry\">DZone</a>!<br>\nIt explains how to use the <a href=\"https://www.eclipse.org/unide/2017/06/29/Validator-Online/\">PPMP validator</a>, gives an overview of the InfluxDB / Grafana visualisation and how this setup can be used in an Eclipse Testbed.</p>\n","url":"/blog/2017/10/6/DZone-article-published","title":"DZone article published","date":"2017-10-06T00:00:00.000Z","tags":["media"],"prev":{"url":"/blog/2017/6/29/Validator-Online","title":"First PPMP-Validator Online"},"next":{"url":"/blog/2017/10/19/i40-testbed-started","title":"Unide is part of Industry 4.0 Testbed"}}
\ No newline at end of file
+{"name":"DZone-article-published","content":"<p>A new article about the Production Performance Management Protocol and the Eclipse Unide project was published at <a href=\"https://dzone.com/articles/eclipse-unide-a-way-to-establish-an-open-industry\">DZone</a>!<br>\nIt explains how to use the <a href=\"https://www.eclipse.org/unide/2017/06/29/Validator-Online/\">the Production Performance Management Protocol validator</a>, gives an overview of the InfluxDB / Grafana visualisation and how this setup can be used in an Eclipse Testbed.</p>\n","url":"/blog/2017/10/6/DZone-article-published","title":"DZone article published","date":"2017-10-06T00:00:00.000Z","tags":["media"],"prev":{"url":"/blog/2017/6/29/Validator-Online","title":"First Production Performance Management Protocol-Validator Online"},"next":{"url":"/blog/2017/10/19/i40-testbed-started","title":"Unide is part of Industry 4.0 Testbed"}}
\ No newline at end of file
diff --git a/files/posts/New-process-message-spec.json b/files/posts/New-process-message-spec.json
index 805e6d7..f3f0fd8 100644
--- a/files/posts/New-process-message-spec.json
+++ b/files/posts/New-process-message-spec.json
@@ -1 +1 @@
-{"name":"New-process-message-spec","content":"<p>We’re happy to announce, that the process message specification is online! You can find it at <a href=\"http://www.eclipse.org/unide/specification\">http://www.eclipse.org/unide/specification</a>. With this type of messages you have a standard format for sending data out of discrete and possibly complex processes. <img src=\"/unide/images/processPayload.png\" alt=\"alt text\"></p>\n","url":"/blog/2017/6/1/New-process-message-spec","title":"New PPMP-Specification for processes","date":"2017-06-01T00:00:00.000Z","tags":["process message"],"prev":{"url":"/blog/2017/3/23/Unide-at-BCX","title":"Unide at Bosch Hackaton"},"next":{"url":"/blog/2017/6/29/Validator-Online","title":"First PPMP-Validator Online"}}
\ No newline at end of file
+{"name":"New-process-message-spec","content":"<p>We’re happy to announce, that the process message specification is online! You can find it at <a href=\"http://www.eclipse.org/unide/specification\">http://www.eclipse.org/unide/specification</a>. With this type of messages you have a standard format for sending data out of discrete and possibly complex processes. <img src=\"/unide/images/processPayload.png\" alt=\"alt text\"></p>\n","url":"/blog/2017/6/1/New-process-message-spec","title":"New Production Performance Management Protocol-Specification for processes","date":"2017-06-01T00:00:00.000Z","tags":["process message"],"prev":{"url":"/blog/2017/3/23/Unide-at-BCX","title":"Unide at Bosch Hackaton"},"next":{"url":"/blog/2017/6/29/Validator-Online","title":"First Production Performance Management Protocol-Validator Online"}}
\ No newline at end of file
diff --git a/files/posts/New-website.json b/files/posts/New-website.json
index 66ff5db..7edcc0f 100644
--- a/files/posts/New-website.json
+++ b/files/posts/New-website.json
@@ -1 +1 @@
-{"name":"New-website","content":"<p>It turned out that even with multiple reviews, it is possible to have small mistakes in the PPMP documentation. In order to avoid such contradictions between diagrams, specification, json-schema and eventual implementation, we decided to rework the project structure and fixed <a href=\"https://github.com/eclipse/unide/issues/21\">the JSON Schemas</a>. The corresponding uml diagrams are generated with <a href=\"http://plantuml.com/\">plantuml</a>. For even better understandibility, the attributes are sorted lexicographically.</p>\n<p>Although the website has the same look, it is completely reworked as a <a href=\"https://en.wikipedia.org/wiki/Single-page_application\">single-page application</a> to generate the specification directly from the json-schema. Instead of using <a href=\"https://hexo.io/\">hexo</a> it is now based on <a href=\"https://nuxtjs.org/\">nuxt.js</a>. <a href=\"https://vuejs.org/\">Vue.js</a> as a basis for nuxt is also used in the <a href=\"https://github.com/eclipse/unide/tree/master/clients/binsa\">new PPMP client application called binsa</a>.</p>\n","url":"/blog/2018/1/26/New-website","title":"Updated Website","date":"2018-01-26T00:00:00.000Z","tags":["media"],"prev":{"url":"/blog/2017/10/19/i40-testbed-started","title":"Unide is part of Industry 4.0 Testbed"},"next":{"url":"/blog/2018/2/11/Transform-PPMP-with-camel","title":"PPMP Use Cases: Simple Transformation with Apache Camel"}}
\ No newline at end of file
+{"name":"New-website","content":"<p>It turned out that even with multiple reviews, it is possible to have small mistakes in the Production Performance Management Protocol documentation. In order to avoid such contradictions between diagrams, specification, json-schema and eventual implementation, we decided to rework the project structure and fixed <a href=\"https://github.com/eclipse/unide/issues/21\">the JSON Schemas</a>. The corresponding uml diagrams are generated with <a href=\"http://plantuml.com/\">plantuml</a>. For even better understandibility, the attributes are sorted lexicographically.</p>\n<p>Although the website has the same look, it is completely reworked as a <a href=\"https://en.wikipedia.org/wiki/Single-page_application\">single-page application</a> to generate the specification directly from the json-schema. Instead of using <a href=\"https://hexo.io/\">hexo</a> it is now based on <a href=\"https://nuxtjs.org/\">nuxt.js</a>. <a href=\"https://vuejs.org/\">Vue.js</a> as a basis for nuxt is also used in the <a href=\"https://github.com/eclipse/unide/tree/master/clients/binsa\">new Production Performance Management Protocol client application called binsa</a>.</p>\n","url":"/blog/2018/1/26/New-website","title":"Updated Website","date":"2018-01-26T00:00:00.000Z","tags":["media"],"prev":{"url":"/blog/2017/10/19/i40-testbed-started","title":"Unide is part of Industry 4.0 Testbed"},"next":{"url":"/blog/2018/2/11/Transform-PPMP-with-camel","title":"Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel"}}
\ No newline at end of file
diff --git a/files/posts/News-coverage.json b/files/posts/News-coverage.json
index 1c39185..b5c63f1 100644
--- a/files/posts/News-coverage.json
+++ b/files/posts/News-coverage.json
@@ -1 +1 @@
-{"name":"News-coverage","content":"<p>After the <a href=\"/unide/2016/09/21/Official%20launch/\">Official launch</a> of unide and PPMP, there was some media coverage about the project.</p>\n<p>Triggered by a statement by <a href=\"http://www.bosch.com/en/com/bosch_group/board_management/dr_rer_nat_volkmar_denner/volkmar-denner.html\">Bosch CEO Volkmar Denner</a> on <em><a href=\"http://www.bosch-presse.de/pressportal/en/bosch-initiates-new-machine-language-for-industry-4-0-65216.html\">&quot;initiating new machine language for Industry 4.0&quot;</a></em>, twitter, blogs and magazines mention PPMP, e.g.:</p>\n<ul>\n<li><a href=\"https://www.elektormagazine.com/news/free-ppmp-from-bosch-makes-industry-4-0-open-for-all\">electormagazine</a></li>\n<li><a href=\"http://www.computer-automation.de/feldebene/vernetzung/artikel/134233/\">computer-automation</a> (de)</li>\n</ul>\n<p>Looking forward to spreading the word further.</p>\n","url":"/blog/2016/9/27/News-coverage","title":"News Coverage","date":"2016-09-27T09:14:27.000Z","tags":["media"],"prev":{"url":"/blog/2016/9/21/Official-launch","title":"Official launch"},"next":{"url":"/blog/2017/3/23/Unide-at-BCX","title":"Unide at Bosch Hackaton"}}
\ No newline at end of file
+{"name":"News-coverage","content":"<p>After the <a href=\"/unide/2016/09/21/Official%20launch/\">Official launch</a> of unide and the Production Performance Management Protocol, there was some media coverage about the project.</p>\n<p>Triggered by a statement by <a href=\"http://www.bosch.com/en/com/bosch_group/board_management/dr_rer_nat_volkmar_denner/volkmar-denner.html\">Bosch CEO Volkmar Denner</a> on <em><a href=\"http://www.bosch-presse.de/pressportal/en/bosch-initiates-new-machine-language-for-industry-4-0-65216.html\">&quot;initiating new machine language for Industry 4.0&quot;</a></em>, twitter, blogs and magazines mention Production Performance Management Protocol, e.g.:</p>\n<ul>\n<li><a href=\"https://www.elektormagazine.com/news/free-ppmp-from-bosch-makes-industry-4-0-open-for-all\">electormagazine</a></li>\n<li><a href=\"http://www.computer-automation.de/feldebene/vernetzung/artikel/134233/\">computer-automation</a> (de)</li>\n</ul>\n<p>Looking forward to spreading the word further.</p>\n","url":"/blog/2016/9/27/News-coverage","title":"News Coverage","date":"2016-09-27T09:14:27.000Z","tags":["media"],"prev":{"url":"/blog/2016/9/21/Official-launch","title":"Official launch"},"next":{"url":"/blog/2017/3/23/Unide-at-BCX","title":"Unide at Bosch Hackaton"}}
\ No newline at end of file
diff --git a/files/posts/Official-launch.json b/files/posts/Official-launch.json
index 07d362e..ce8eb97 100644
--- a/files/posts/Official-launch.json
+++ b/files/posts/Official-launch.json
@@ -1 +1 @@
-{"name":"Official-launch","content":"<p>Today, we officially launch Unide. In the last days, we have redesigned the logo, published Blog posts and started work on the initial (code) contributions.<br>\nIt even seems like good timing, since there was a <a href=\"http://m.heise.de/newsticker/meldung/Umfrage-Unternehmen-fordern-offene-Plattform-fuer-die-Industrie-4-0-3327135.html\">survey in Germany about open platforms &amp; standards in industry 4.0</a>, basically asking for something like Unide/PPMP.</p>\n<h3>the logo</h3>\n<p>Unide and PPMP's goal is to enable you to connect machines and receive their measurements / alerts. The logo represents that. It has you (&quot;<em>U</em>&quot;) highlighted and connects to rings. As a side note, we found that the words almost look like <em>you-nice</em>.</p>\n<h3>blog entries</h3>\n<p>If you are interested in further readings, check out the post at <a href=\"http://blog.bosch-si.com\">blog.bosch-si.com</a>.</p>\n<h3>initial contributions</h3>\n<p>We are working on creating the initial contributions for Unide. Since there are a few legal aspects we have to consider, stay tuned. The code will be published to our <a href=\"https://github.com/eclipse/unide\">github repository</a>.</p>\n","url":"/blog/2016/9/21/Official-launch","title":"Official launch","date":"2016-09-21T09:47:43.000Z","tags":["project start"],"prev":{"url":"/blog/2016/9/16/Project-approved","title":"Eclipse Project approved"},"next":{"url":"/blog/2016/9/27/News-coverage","title":"News Coverage"}}
\ No newline at end of file
+{"name":"Official-launch","content":"<p>Today, we officially launch Unide. In the last days, we have redesigned the logo, published Blog posts and started work on the initial (code) contributions.<br>\nIt even seems like good timing, since there was a <a href=\"http://m.heise.de/newsticker/meldung/Umfrage-Unternehmen-fordern-offene-Plattform-fuer-die-Industrie-4-0-3327135.html\">survey in Germany about open platforms &amp; standards in industry 4.0</a>, basically asking for something like Unide/the Production Performance Management Protocol.</p>\n<h3>the logo</h3>\n<p>Unide and the Production Performance Management Protocol's goal is to enable you to connect machines and receive their measurements / alerts. The logo represents that. It has you (&quot;<em>U</em>&quot;) highlighted and connects to rings. As a side note, we found that the words almost look like <em>you-nice</em>.</p>\n<h3>blog entries</h3>\n<p>If you are interested in further readings, check out the post at <a href=\"http://blog.bosch-si.com\">blog.bosch-si.com</a>.</p>\n<h3>initial contributions</h3>\n<p>We are working on creating the initial contributions for Unide. Since there are a few legal aspects we have to consider, stay tuned. The code will be published to our <a href=\"https://github.com/eclipse/unide\">github repository</a>.</p>\n","url":"/blog/2016/9/21/Official-launch","title":"Official launch","date":"2016-09-21T09:47:43.000Z","tags":["project start"],"prev":{"url":"/blog/2016/9/16/Project-approved","title":"Eclipse Project approved"},"next":{"url":"/blog/2016/9/27/News-coverage","title":"News Coverage"}}
\ No newline at end of file
diff --git a/files/posts/Project-approved.json b/files/posts/Project-approved.json
index f80c137..3af45a2 100644
--- a/files/posts/Project-approved.json
+++ b/files/posts/Project-approved.json
@@ -1 +1 @@
-{"name":"Project-approved","content":"<p>Unide proposal has been approved to be an Eclipse Project! You can now find all relevant information at <a href=\"https://projects.eclipse.org/projects/iot.unide\">https://projects.eclipse.org/projects/iot.unide</a>.</p>\n<p>There's still some paperwork pending, but it looks promising! Next steps are</p>\n<ul>\n<li>creating a proper homepage with relevant information and the PPMP specification</li>\n<li>license checking of initial commitment code.</li>\n<li>getting in touch with Eclipse community</li>\n<li>making plans for the upcoming months</li>\n</ul>\n<p>If you are interested in industry 4.0, IoT stack in manufacturing or you are building industry machines and want to find out more about the possiblities with PPMP, let us know: <a href=\"mailto:unide-inbox@eclipse.org?subject=Interested%20in%20contributing\">unide-inbox@eclipse.org</a></p>\n","url":"/blog/2016/9/16/Project-approved","title":"Eclipse Project approved","date":"2016-09-16T12:16:37.000Z","tags":["project start"],"prev":{"url":"/blog/2016/9/12/Unide-proposal-online","title":"Unide proposal online"},"next":{"url":"/blog/2016/9/21/Official-launch","title":"Official launch"}}
\ No newline at end of file
+{"name":"Project-approved","content":"<p>Unide proposal has been approved to be an Eclipse Project! You can now find all relevant information at <a href=\"https://projects.eclipse.org/projects/iot.unide\">https://projects.eclipse.org/projects/iot.unide</a>.</p>\n<p>There's still some paperwork pending, but it looks promising! Next steps are</p>\n<ul>\n<li>creating a proper homepage with relevant information and the Production Performance Management Protocol specification</li>\n<li>license checking of initial commitment code.</li>\n<li>getting in touch with Eclipse community</li>\n<li>making plans for the upcoming months</li>\n</ul>\n<p>If you are interested in industry 4.0, IoT stack in manufacturing or you are building industry machines and want to find out more about the possiblities with the Production Performance Management Protocol, let us know: <a href=\"mailto:unide-inbox@eclipse.org?subject=Interested%20in%20contributing\">unide-inbox@eclipse.org</a></p>\n","url":"/blog/2016/9/16/Project-approved","title":"Eclipse Project approved","date":"2016-09-16T12:16:37.000Z","tags":["project start"],"prev":{"url":"/blog/2016/9/12/Unide-proposal-online","title":"Unide proposal online"},"next":{"url":"/blog/2016/9/21/Official-launch","title":"Official launch"}}
\ No newline at end of file
diff --git a/files/posts/Release-0.2.0.json b/files/posts/Release-0.2.0.json
index 9fe49a1..cb848bb 100644
--- a/files/posts/Release-0.2.0.json
+++ b/files/posts/Release-0.2.0.json
@@ -1 +1 @@
-{"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"}}
\ No newline at end of file
+{"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, Production Performance Management Protocol 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 Production Performance Management Protocol 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/\">Production Performance Management Protocol 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/\">Production Performance Management Protocol 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\">Production Performance Management Protocol 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/\">Production Performance Management Protocol 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>Production Performance Management Protocol 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 Production Performance Management Protocol 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":"Use Cases: Unide and the Eclipse Testbed"},"next":{"url":"/blog/2018/9/4/Template-for-PPMP-transformation","title":"Use Cases: Template for transformation"}}
\ No newline at end of file
diff --git a/files/posts/Template-for-PPMP-transformation.json b/files/posts/Template-for-PPMP-transformation.json
index 084d058..5cdddd2 100644
--- a/files/posts/Template-for-PPMP-transformation.json
+++ b/files/posts/Template-for-PPMP-transformation.json
@@ -1 +1 @@
-{"name":"Template-for-PPMP-transformation","content":"<h1>Quick start</h1>\n<p>In <a href=\"https://www.eclipse.org/unide/blog/2018/2/11/Transform-PPMP-with-camel/\">a previous blog post</a>, I have already introduced Apache Camel as a tool to transform to PPMP. In this post, I want to dive a little deeper to get you started with your own transformation.<br>\nYou can find corresponding source code with some transformation examples <a href=\"https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement/tree/master/camel-integrator\">in the repository of the Eclipse PPM Testbed</a>. After download or checkout of the project, you can easily package everything necessary for an installation via <a href=\"https://maven.apache.org/\">Apache Maven</a> and java 8+:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">git</span> clone https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement.git\n<span class=\"token function\">cd</span> eclipseiot-testbed-productionperformancemanagement\n<span class=\"token function\">cd</span> camel-integrator\nmvn package\n</code></pre>\n<p>After successful build, you should get a zip file at <code>target/camel-integrator-*-assembly.zip</code> with the following content</p>\n<ul>\n<li><code>bin</code><br>\nThe IntegratorStarter* files for Windows and Linux can be used to start the integrator manually. WinServiceInstaller.bat und WinServiceUninstaller.bat can be executed with Admin permissions in Windows to register/unregister this java application as Windows Service called &quot;Integrator Service&quot;.</li>\n<li><code>conf</code><br>\nThis is where the main configuration file <code>application-context.xml</code>, further included spring xml configurations, as well as the configuration for logging <code>log4j.properties</code> and a key-value-file for quick configuration <code>application.properties</code> can be found. After modification of any of them, the integrator should be restarted.</li>\n<li><code>lib</code><br>\nContains all java dependencies and their dependencies as individual jar files</li>\n<li><code>log</code><br>\nAfter the first start, you will find an additional directory that contains the logs of every execution, as defined in the <code>conf/log4j.properties</code> file.</li>\n</ul>\n<p>So this <code>camel-integrator-*-assembly.zip</code> is all you need, ready to being shipped and installed in your target system.</p>\n<h1>How can I modify this?</h1>\n<p>In the <code>conf</code> folder of the output or <code>src/main/resources</code> src folder, you'll find multiple examples on how to use Apache Camel with Production Performance Management Protocol. Most of the examples are based on <a href=\"https://github.com/apache/camel/blob/master/components/camel-spring/src/main/docs/spring.adoc\">spring xml</a>.<br>\nThe most important terms to understand them are:</p>\n<table>\n<thead>\n<tr>\n<th>xml tag</th>\n<th>meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bean</td>\n<td>additional functionality, coded as java class / function</td>\n</tr>\n<tr>\n<td>camelContext</td>\n<td>the main, camel specific configurations</td>\n</tr>\n<tr>\n<td>route</td>\n<td>describes the data flow as process</td>\n</tr>\n<tr>\n<td>from / to</td>\n<td>entry / exit points for the data flow. This is also, were external systems are accessed via <a href=\"https://github.com/apache/camel/tree/camel-2.21.0/components\">components</a></td>\n</tr>\n<tr>\n<td>onException</td>\n<td>error handling for the data flow</td>\n</tr>\n<tr>\n<td>pipeline, multicast, ...</td>\n<td>routing of data via <a href=\"http://camel.apache.org/enterprise-integration-patterns.html\">Enterprise Integration pattern</a></td>\n</tr>\n</tbody>\n</table>\n<p>Among others, you'll find:</p>\n<div class=\"card figure is-pulled-right\">\n\t<div class=\"card-image\">\n\t\t<figure class=\"image\">\n\t\t\t<img alt=\"html log file\" title=\"html log file\" src=\"/unide/images/blog/Transform-PPMP-with-camel-2-logfile.png\"></img>\n\t\t</figure>\n\t</div>\n\t<div class=\"card-content\">\n\t\thtml logfile before transformation to PPMP\n\t</div>\n</div>\n<ul>\n<li><code>application-context.xml</code><br>\nMain entry file to start camel routes. It contains a general PPMP validation REST endpoint that reuses the route from <code>ppmp-validate-context.xml</code></li>\n<li><code>mqtt-context.xml</code><br>\nA simple example of converting transport protocol (mqtt to REST), without looking at the payload</li>\n<li><code>ppmp-splitAndRewrite-context.xml</code><br>\nShows how to receive (PPMP-) payload via different REST paths (/rest or /ppm), and each forwarding to two seperate endpoints (/rest and /ppm)\n<ul>\n<li><code>ppmpRewrite.xml</code> and <code>ppmRewrite.xml</code><br>\nmapping examples to rewrite the urls</li>\n</ul>\n</li>\n<li><code>ppmp-validate-context.xml</code><br>\nA simple validation route for PPMP messages that can be reused in many other routes.</li>\n<li><code>psi6000-transform-context.xml</code><br>\nA more advanced example of converting a psi6000 JSON format, converting it to plain old java object (POJO), transforming that to PPMP POJOs (using <a href=\"https://github.com/eclipse/unide.java\">unide.java</a>) and forwarding these to actual REST endpoints</li>\n<li><code>kistler.xml</code><br>\nThis example takes html files with a structure similar to the test file in <a href=\"https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement/blob/master/camel-integrator/src/test/data/00000855.html\"><code>src/test/data/00000855.html</code></a>, cleans the html structure, retrieves the relevant parts via <a href=\"https://en.wikipedia.org/wiki/XPath\">XPath</a> and creates a PPMP process message out of that</li>\n<li><code>application.properties</code><br>\nContains key/value pairs that can be used in the camel context configurations.</li>\n<li><code>log4j.properties</code><br>\nThe configuration for logging. For testing purposes, the log4j.properties in /src/test/resources is used.</li>\n</ul>\n<p>In order to get familiar with these transformations, I suggest you:</p>\n<ul>\n<li>open the <code>application-context.xml</code> in your favorite editor</li>\n<li>remove the <code>&lt;import .../&gt;</code> statements</li>\n<li>add your own <code>&lt;route&gt;...&lt;/route&gt;</code>, maybe as simple as<pre class=\"language-xml\"><code class=\"language-xml\">  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>route</span><span class=\"token punctuation\">></span></span>\n  \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>from</span> <span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>jetty:http://0.0.0.0:9090/<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n  \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>setBody</span><span class=\"token punctuation\">></span></span>\n  \t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>simple</span><span class=\"token punctuation\">></span></span>hello world!<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>simple</span><span class=\"token punctuation\">></span></span>\n  \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>setBody</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>route</span><span class=\"token punctuation\">></span></span>\n</code></pre>\n</li>\n<li>start a run directly (with bundling to a zip file) with:<pre class=\"language-bash\"><code class=\"language-bash\">  mvn exec:java\n</code></pre>\n</li>\n<li>and review the result. With the example above, just open the url <a href=\"http://localhost:9090\">http://localhost:9090</a> and see the <code>hello world!</code> in your browser</li>\n</ul>\n<p>If you prefer a visual model of these camel xml definitions, you could also make use of <a href=\"https://tools.jboss.org/features/fusetools.html\">JBoss Fuse Tooling</a> which is available for <a href=\"https://projects.eclipse.org/releases/oxygen\">Eclipse Workbench 4.3+</a> through <a href=\"https://marketplace.eclipse.org/content/jboss-tools\">the Marketplace</a>. Be aware that this might cause additional overhead.</p>\n<div class=\"card figure\">\n\t<div class=\"card-image\">\n\t\t<figure class=\"image\">\n\t\t\t<img alt=\"JBoss Tools\" title=\"JBoss Tools for Eclipse Workbench\" src=\"/unide/images/blog/Transform-PPMP-with-camel-2-eclipse.png\"></img>\n\t\t</figure>\n\t</div>\n\t<div class=\"card-content\">\n\t\tJBoss Tools for Eclipse Workbench\n\t</div>\n</div>\n<p>If you want to make use of any other of the (as of camel 2.21.0) <a href=\"https://github.com/apache/camel/tree/camel-2.21.0/components\">281+ components</a>, you should add the respective maven dependency to the <code>pom.xml</code>. For example:</p>\n<pre class=\"language-xml\"><code class=\"language-xml\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>project</span> <span class=\"token attr-name\">xmlns</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://maven.apache.org/POM/4.0.0<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\"><span class=\"token namespace\">xmlns:</span>xsi</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://www.w3.org/2001/XMLSchema-instance<span class=\"token punctuation\">\"</span></span>\n\t<span class=\"token attr-name\"><span class=\"token namespace\">xsi:</span>schemaLocation</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t...\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>dependencies</span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>dependency</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>groupId</span><span class=\"token punctuation\">></span></span>org.apache.camel<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>groupId</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>artifactId</span><span class=\"token punctuation\">></span></span>camel-amqp<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>artifactId</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>version</span><span class=\"token punctuation\">></span></span>${camel.version}<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>version</span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>dependency</span><span class=\"token punctuation\">></span></span>\n\t...\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>dependencies</span><span class=\"token punctuation\">></span></span>\n\t...\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>project</span><span class=\"token punctuation\">></span></span>\n</code></pre>\n<h1>Testing</h1>\n<p>Testing is an important part of the development cycle, especially for the core components that have to work reliably in a production environment.<br>\nThe project includes example tests in the <code>src/test</code> folder:</p>\n<ul>\n<li><code>java</code><br>\ncontains the actual java unit tests that make use of <a href=\"https://github.com/apache/camel/blob/61a58836da57bab38ce719cbd1effd36253687a4/docs/user-manual/en/spring-testing.adoc\"><code>CamelSpringTestSupport</code></a> to wire xml CamelContext configuration, test data and expected results together</li>\n<li><code>resources</code><br>\ncontains the spring xml configuration that is used by the java test classes and resamble the actual configurations from <code>src/main/resources</code></li>\n<li><code>data</code><br>\ncontains testdata for the data flows and the transformation</li>\n</ul>\n<p>Tests can easily be run from within an IDE (eclipse, visual code studio etc.) or via commandline</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">mvn <span class=\"token function\">test</span>\n</code></pre>\n<p>You will see the output of the test runs. If it looks like this, it works as expected:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.846 sec\n\nResults <span class=\"token keyword\">:</span>\n\nTests run: 3, Failures: 0, Errors: 0, Skipped: 0\n\n<span class=\"token punctuation\">[</span>INFO<span class=\"token punctuation\">]</span> ------------------------------------------------------------------------\n<span class=\"token punctuation\">[</span>INFO<span class=\"token punctuation\">]</span> BUILD SUCCESS\n<span class=\"token punctuation\">[</span>INFO<span class=\"token punctuation\">]</span> ------------------------------------------------------------------------\n<span class=\"token punctuation\">[</span>INFO<span class=\"token punctuation\">]</span> Total time: 32.267 s\n<span class=\"token punctuation\">[</span>INFO<span class=\"token punctuation\">]</span> Finished at: 2018-04-09T15:25:25+02:00\n<span class=\"token punctuation\">[</span>INFO<span class=\"token punctuation\">]</span> Final Memory: 25M/85M\n<span class=\"token punctuation\">[</span>INFO<span class=\"token punctuation\">]</span> ------------------------------------------------------------------------\n</code></pre>\n<h1>Summary</h1>\n<p>The provided camel project template facilitates the creation of simple connectors. You can download it, modify or extend it, package the integrator to a zip file and deploy it on a target server. The included scripts help registering the integrator as an operating system service to run 24/7.</p>\n","url":"/blog/2018/9/4/Template-for-PPMP-transformation","title":"PPMP Use Cases: Template for PPMP transformation","date":"2018-09-04T00:00:00.000Z","tags":["use cases"],"prev":{"url":"/blog/2018/3/26/Release-0.2.0","title":"Unide 0.2.0 released"},"next":{"url":"/blog/2019/3/1/Version-3","title":"PPMP Version 3 release candidate"}}
\ No newline at end of file
+{"name":"Template-for-PPMP-transformation","content":"<h1>Quick start</h1>\n<p>In <a href=\"https://www.eclipse.org/unide/blog/2018/2/11/Transform-PPMP-with-camel/\">a previous blog post</a>, I have already introduced Apache Camel as a tool to transform to the Production Performance Management Protocol. In this post, I want to dive a little deeper to get you started with your own transformation.<br>\nYou can find corresponding source code with some transformation examples <a href=\"https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement/tree/master/camel-integrator\">in the repository of the Eclipse PPM Testbed</a>. After download or checkout of the project, you can easily package everything necessary for an installation via <a href=\"https://maven.apache.org/\">Apache Maven</a> and java 8+:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">git</span> clone https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement.git\n<span class=\"token function\">cd</span> eclipseiot-testbed-productionperformancemanagement\n<span class=\"token function\">cd</span> camel-integrator\nmvn package\n</code></pre>\n<p>After successful build, you should get a zip file at <code>target/camel-integrator-*-assembly.zip</code> with the following content</p>\n<ul>\n<li><code>bin</code><br>\nThe IntegratorStarter* files for Windows and Linux can be used to start the integrator manually. WinServiceInstaller.bat und WinServiceUninstaller.bat can be executed with Admin permissions in Windows to register/unregister this java application as Windows Service called &quot;Integrator Service&quot;.</li>\n<li><code>conf</code><br>\nThis is where the main configuration file <code>application-context.xml</code>, further included spring xml configurations, as well as the configuration for logging <code>log4j.properties</code> and a key-value-file for quick configuration <code>application.properties</code> can be found. After modification of any of them, the integrator should be restarted.</li>\n<li><code>lib</code><br>\nContains all java dependencies and their dependencies as individual jar files</li>\n<li><code>log</code><br>\nAfter the first start, you will find an additional directory that contains the logs of every execution, as defined in the <code>conf/log4j.properties</code> file.</li>\n</ul>\n<p>So this <code>camel-integrator-*-assembly.zip</code> is all you need, ready to being shipped and installed in your target system.</p>\n<h1>How can I modify this?</h1>\n<p>In the <code>conf</code> folder of the output or <code>src/main/resources</code> src folder, you'll find multiple examples on how to use Apache Camel with Production Performance Management Protocol. Most of the examples are based on <a href=\"https://github.com/apache/camel/blob/master/components/camel-spring/src/main/docs/spring.adoc\">spring xml</a>.<br>\nThe most important terms to understand them are:</p>\n<table>\n<thead>\n<tr>\n<th>xml tag</th>\n<th>meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bean</td>\n<td>additional functionality, coded as java class / function</td>\n</tr>\n<tr>\n<td>camelContext</td>\n<td>the main, camel specific configurations</td>\n</tr>\n<tr>\n<td>route</td>\n<td>describes the data flow as process</td>\n</tr>\n<tr>\n<td>from / to</td>\n<td>entry / exit points for the data flow. This is also, were external systems are accessed via <a href=\"https://github.com/apache/camel/tree/camel-2.21.0/components\">components</a></td>\n</tr>\n<tr>\n<td>onException</td>\n<td>error handling for the data flow</td>\n</tr>\n<tr>\n<td>pipeline, multicast, ...</td>\n<td>routing of data via <a href=\"http://camel.apache.org/enterprise-integration-patterns.html\">Enterprise Integration pattern</a></td>\n</tr>\n</tbody>\n</table>\n<p>Among others, you'll find:</p>\n<div class=\"card figure is-pulled-right\">\n\t<div class=\"card-image\">\n\t\t<figure class=\"image\">\n\t\t\t<img alt=\"html log file\" title=\"html log file\" src=\"/unide/images/blog/Transform-PPMP-with-camel-2-logfile.png\"></img>\n\t\t</figure>\n\t</div>\n\t<div class=\"card-content\">\n\t\thtml logfile before transformation to the Production Performance Management Protocol\n\t</div>\n</div>\n<ul>\n<li><code>application-context.xml</code><br>\nMain entry file to start camel routes. It contains a general Production Performance Management Protocol validation REST endpoint that reuses the route from <code>ppmp-validate-context.xml</code></li>\n<li><code>mqtt-context.xml</code><br>\nA simple example of converting transport protocol (mqtt to REST), without looking at the payload</li>\n<li><code>ppmp-splitAndRewrite-context.xml</code><br>\nShows how to receive (Production Performance Management Protocol-) payload via different REST paths (/rest or /ppm), and each forwarding to two seperate endpoints (/rest and /ppm)\n<ul>\n<li><code>ppmpRewrite.xml</code> and <code>ppmRewrite.xml</code><br>\nmapping examples to rewrite the urls</li>\n</ul>\n</li>\n<li><code>ppmp-validate-context.xml</code><br>\nA simple validation route for Production Performance Management Protocol messages that can be reused in many other routes.</li>\n<li><code>psi6000-transform-context.xml</code><br>\nA more advanced example of converting a psi6000 JSON format, converting it to plain old java object (POJO), transforming that to Production Performance Management Protocol POJOs (using <a href=\"https://github.com/eclipse/unide.java\">unide.java</a>) and forwarding these to actual REST endpoints</li>\n<li><code>kistler.xml</code><br>\nThis example takes html files with a structure similar to the test file in <a href=\"https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement/blob/master/camel-integrator/src/test/data/00000855.html\"><code>src/test/data/00000855.html</code></a>, cleans the html structure, retrieves the relevant parts via <a href=\"https://en.wikipedia.org/wiki/XPath\">XPath</a> and creates a Production Performance Management Protocol process message out of that</li>\n<li><code>application.properties</code><br>\nContains key/value pairs that can be used in the camel context configurations.</li>\n<li><code>log4j.properties</code><br>\nThe configuration for logging. For testing purposes, the log4j.properties in /src/test/resources is used.</li>\n</ul>\n<p>In order to get familiar with these transformations, I suggest you:</p>\n<ul>\n<li>open the <code>application-context.xml</code> in your favorite editor</li>\n<li>remove the <code>&lt;import .../&gt;</code> statements</li>\n<li>add your own <code>&lt;route&gt;...&lt;/route&gt;</code>, maybe as simple as<pre class=\"language-xml\"><code class=\"language-xml\">  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>route</span><span class=\"token punctuation\">></span></span>\n  \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>from</span> <span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>jetty:http://0.0.0.0:9090/<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n  \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>setBody</span><span class=\"token punctuation\">></span></span>\n  \t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>simple</span><span class=\"token punctuation\">></span></span>hello world!<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>simple</span><span class=\"token punctuation\">></span></span>\n  \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>setBody</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>route</span><span class=\"token punctuation\">></span></span>\n</code></pre>\n</li>\n<li>start a run directly (with bundling to a zip file) with:<pre class=\"language-bash\"><code class=\"language-bash\">  mvn exec:java\n</code></pre>\n</li>\n<li>and review the result. With the example above, just open the url <a href=\"http://localhost:9090\">http://localhost:9090</a> and see the <code>hello world!</code> in your browser</li>\n</ul>\n<p>If you prefer a visual model of these camel xml definitions, you could also make use of <a href=\"https://tools.jboss.org/features/fusetools.html\">JBoss Fuse Tooling</a> which is available for <a href=\"https://projects.eclipse.org/releases/oxygen\">Eclipse Workbench 4.3+</a> through <a href=\"https://marketplace.eclipse.org/content/jboss-tools\">the Marketplace</a>. Be aware that this might cause additional overhead.</p>\n<div class=\"card figure\">\n\t<div class=\"card-image\">\n\t\t<figure class=\"image\">\n\t\t\t<img alt=\"JBoss Tools\" title=\"JBoss Tools for Eclipse Workbench\" src=\"/unide/images/blog/Transform-PPMP-with-camel-2-eclipse.png\"></img>\n\t\t</figure>\n\t</div>\n\t<div class=\"card-content\">\n\t\tJBoss Tools for Eclipse Workbench\n\t</div>\n</div>\n<p>If you want to make use of any other of the (as of camel 2.21.0) <a href=\"https://github.com/apache/camel/tree/camel-2.21.0/components\">281+ components</a>, you should add the respective maven dependency to the <code>pom.xml</code>. For example:</p>\n<pre class=\"language-xml\"><code class=\"language-xml\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>project</span> <span class=\"token attr-name\">xmlns</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://maven.apache.org/POM/4.0.0<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\"><span class=\"token namespace\">xmlns:</span>xsi</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://www.w3.org/2001/XMLSchema-instance<span class=\"token punctuation\">\"</span></span>\n\t<span class=\"token attr-name\"><span class=\"token namespace\">xsi:</span>schemaLocation</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t...\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>dependencies</span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>dependency</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>groupId</span><span class=\"token punctuation\">></span></span>org.apache.camel<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>groupId</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>artifactId</span><span class=\"token punctuation\">></span></span>camel-amqp<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>artifactId</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>version</span><span class=\"token punctuation\">></span></span>${camel.version}<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>version</span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>dependency</span><span class=\"token punctuation\">></span></span>\n\t...\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>dependencies</span><span class=\"token punctuation\">></span></span>\n\t...\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>project</span><span class=\"token punctuation\">></span></span>\n</code></pre>\n<h1>Testing</h1>\n<p>Testing is an important part of the development cycle, especially for the core components that have to work reliably in a production environment.<br>\nThe project includes example tests in the <code>src/test</code> folder:</p>\n<ul>\n<li><code>java</code><br>\ncontains the actual java unit tests that make use of <a href=\"https://github.com/apache/camel/blob/61a58836da57bab38ce719cbd1effd36253687a4/docs/user-manual/en/spring-testing.adoc\"><code>CamelSpringTestSupport</code></a> to wire xml CamelContext configuration, test data and expected results together</li>\n<li><code>resources</code><br>\ncontains the spring xml configuration that is used by the java test classes and resamble the actual configurations from <code>src/main/resources</code></li>\n<li><code>data</code><br>\ncontains testdata for the data flows and the transformation</li>\n</ul>\n<p>Tests can easily be run from within an IDE (eclipse, visual code studio etc.) or via commandline</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">mvn <span class=\"token function\">test</span>\n</code></pre>\n<p>You will see the output of the test runs. If it looks like this, it works as expected:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.846 sec\n\nResults <span class=\"token keyword\">:</span>\n\nTests run: 3, Failures: 0, Errors: 0, Skipped: 0\n\n<span class=\"token punctuation\">[</span>INFO<span class=\"token punctuation\">]</span> ------------------------------------------------------------------------\n<span class=\"token punctuation\">[</span>INFO<span class=\"token punctuation\">]</span> BUILD SUCCESS\n<span class=\"token punctuation\">[</span>INFO<span class=\"token punctuation\">]</span> ------------------------------------------------------------------------\n<span class=\"token punctuation\">[</span>INFO<span class=\"token punctuation\">]</span> Total time: 32.267 s\n<span class=\"token punctuation\">[</span>INFO<span class=\"token punctuation\">]</span> Finished at: 2018-04-09T15:25:25+02:00\n<span class=\"token punctuation\">[</span>INFO<span class=\"token punctuation\">]</span> Final Memory: 25M/85M\n<span class=\"token punctuation\">[</span>INFO<span class=\"token punctuation\">]</span> ------------------------------------------------------------------------\n</code></pre>\n<h1>Summary</h1>\n<p>The provided camel project template facilitates the creation of simple connectors. You can download it, modify or extend it, package the integrator to a zip file and deploy it on a target server. The included scripts help registering the integrator as an operating system service to run 24/7.</p>\n","url":"/blog/2018/9/4/Template-for-PPMP-transformation","title":"Use Cases: Template for transformation","date":"2018-09-04T00:00:00.000Z","tags":["use cases"],"prev":{"url":"/blog/2018/3/26/Release-0.2.0","title":"Unide 0.2.0 released"},"next":{"url":"/blog/2019/3/1/Version-3","title":"Protocol Version 3 release candidate"}}
\ No newline at end of file
diff --git a/files/posts/Transform-PPMP-with-camel.json b/files/posts/Transform-PPMP-with-camel.json
index e6170a1..baf06f5 100644
--- a/files/posts/Transform-PPMP-with-camel.json
+++ b/files/posts/Transform-PPMP-with-camel.json
@@ -1 +1 @@
-{"name":"Transform-PPMP-with-camel","content":"<p>The Production Performance Management Protocol (PPMP) is a simple structure to send out machine data. Unide, as its hosting project, is supposed to provide exemplary implementations.</p>\n<p>We have already published <a href=\"https://github.com/eclipse/unide/tree/master/servers/rest\">a REST server</a>, <a href=\"https://github.com/eclipse/unide.java\">java-</a> and <a href=\"https://github.com/eclipse/unide.python\">python-</a> bindings and an <a href=\"https://github.com/eclipse/unide/tree/master/clients/binsa\">html5-client</a>. But how are these implementations used in real life?</p>\n<h1>The Challenge</h1>\n<div class=\"card figure\">\n\t<div class=\"card-image\">\n\t\t<figure class=\"image\">\n\t\t\t<img alt=\"Welding robots\" title=\"BMW plant, spot welding\" src=\"/unide/images/blog/Transform-PPMP-with-camel-welding.jpg\"></img>\n\t\t</figure>\n\t</div>\n\t<div class=\"card-content\">\n\t\tBMW plant in Leipzig, Germany: Spot welding <a href=\"https://creativecommons.org/licenses/by-sa/2.0/de/deed.en\">(CC BY-SA 2.0 DE)</a>\n\t</div>\n</div>\n<p>In the automotive industry, <a href=\"https://en.wikipedia.org/wiki/Spot_welding\">welding spots</a> are crucial for the quality of a car and the security of the passenger. In modern production lines, hundreds of welding spots have to be precisely set in a single shift. In order to reduce product rework, scrap, destructible tests and machine downtime, the quality should be monitored consistently. That's what special welding controller in machines do. Unfortunately, this data is often only used locally, for a short period of time and in proprietary formats. Just enough to determine the immediate process outcome. In that case, further opportunities of analysing the information are not taken. With the continuous increase in complexity, price and time pressure, the demand for further processing and optimization grows. The data could be used to prevent or even predict maintenance or just store the data in long time archives in case of legal disputes.</p>\n<p>One prerequisite for such connectivity is the hardware and its connectivity. Older generations of welding controllers can only be accessed with proprietary stacks (like the <a href=\"https://www.boschrexroth.com/en/xc/products/product-groups/welding-technology/controllers-with-power-section/mf-system-psi6000/index\">PSI 6000</a>) whereas newer generations (like the <a href=\"https://www.boschrexroth.com/en/xc/company/press/index2-29696\">PRC 7000</a>) are much more flexible in terms of networking and communication. In general, there are two aspects that make up the communication: the transport protocol and the structure of the payload. This is similar to our daily life: if you want to chat with your friends, you need to use the same messenger or communication technology (phone, email) and you need speak the same language (English, German etc.).</p>\n<p>In the following sections, let's assume we need to transform the transport protocol as well as the payload. The data is generated by a welding controller and should be passed to <a href=\"https://unide.eclipse.org\">the unide REST server</a> for persisting it in a dedicated timeseries database.</p>\n<h1>The Approach</h1>\n<p>We want to find a way to receive the data, transform it into PPMP and store it into a database in our <a href=\"https://unide.eclipse.org\">REST Server</a>.</p>\n<p>First, we need to understand which interfaces the controller has, which communication protocol is used, and how the payload would be interpreted. In the case of the PSI 6000, it was configured to publish the quality data to a <a href=\"https://de.wikipedia.org/wiki/MQTT\">mqtt</a> message broker (here: <a href=\"https://mosquitto.org/\">Eclipse mosquitto</a>). We don't have an extensive documentation of the payload, but we can look at samples of it (some Curve data shortened at the end):</p>\n<pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"Name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"WeldLog/UIR Testrack 24/\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"WeldTimer\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"UIR Testrack 24\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"TimeStamp\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2018-01-17T10:41:00.0008436+01:00\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"OutputFormat\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"JSON\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"Message\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"WeldLog\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"protRecord_ID\"</span><span class=\"token operator\">:</span> <span class=\"token number\">734827</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"dateTime\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2018-01-15T16:52:32.09\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"timerName\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"UIR Testrack 24\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"progNo\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"spotName\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"wear\"</span><span class=\"token operator\">:</span> <span class=\"token number\">8312480</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"wearPerCent\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"monitorState\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regulationState\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"measureState\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"powerState\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sequenceState\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sequenceStateAdd\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sequenceRepeat\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"monitorMode\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"iDemandStd\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"ilsts\"</span><span class=\"token operator\">:</span> <span class=\"token number\">13.14</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regulationStd\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"iDemand1\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"iActual1\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regulation1\"</span><span class=\"token operator\">:</span> <span class=\"token number\">4</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"iDemand2\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"iActual2\"</span><span class=\"token operator\">:</span> <span class=\"token number\">13.16</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regulation2\"</span><span class=\"token operator\">:</span> <span class=\"token number\">4</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"iDemand3\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"iActual3\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regulation3\"</span><span class=\"token operator\">:</span> <span class=\"token number\">4</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"phaStd\"</span><span class=\"token operator\">:</span> <span class=\"token number\">24.96</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pha1\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pha2\"</span><span class=\"token operator\">:</span> <span class=\"token number\">24.64</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pha3\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"t_iDemandStd\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"tActualStd\"</span><span class=\"token operator\">:</span> <span class=\"token number\">878</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"partIdentString\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"tipDressCounter\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"electrodeNo\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgForceSetPoint\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgSheetThicknessSetPoint\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgSagGpSetPoint\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgSpotWithSg\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgMotorCurrent\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgMotorTemp\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgForce\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgSheetThickness\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgSagGp\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgSagGc\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regUsrUspJunction\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regUsrUspMax\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regSpotDiaActual\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regSpotDiaMinDemand\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regSplashTime\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"nuggetDiameter\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"usp\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"normingTime\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regulationStartTime\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"returnToConstantCurrent\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"declineUsp\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"offsetUsp\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"currentFactor\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"triggerTime\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"xqrMeasuringActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"xqrRegulationActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"xqrMonitoringActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"xqrWeldTimeProlongationActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"voltageActualValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0.03</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"voltageRefValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0.03</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"currentActualValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">13.17</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"currentReferenceValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">13.95</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldTimeActualValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">876</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldTimeRefValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">760</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"energyActualValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">395.1261</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"energyRefValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">342</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"powerActualValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">395.133</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"powerRefValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">449.35</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"resistanceActualValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"resistanceRefValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pulseWidthActualValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">25.02</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pulseWidthRefValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">26.19</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"stabilisationFactorActValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">55</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"stabilisationFactorRefValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"thresholdStabilisationFactor\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"wldEffectStabilisationFactor\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uipActualValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">126</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uipRefValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirExpulsionTime\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirMeasuringActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirRegulationActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirMonitoringActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirWeldTimeProlongationActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirQStoppRefCntValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">9</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirQStoppActCntValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirUipUpperTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirUipLowerTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirUipCondTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirPsfLowerTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirPsfCondTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_1\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_2\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_3\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_4\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_5\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP32_6\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_7\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_8\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_9\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_10\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_11\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP32_12\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_13\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_14\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_15\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_16\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_17\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP32_18\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uipMonCondUpperTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fqfActualValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fqfRefValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fqfMonUpperTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fqfMonLowerTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fqfMonCondUpperTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fqfMonCondLowerTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fqfMeasuringActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"xqrModeOff\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"reweldActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldspotRefIdent\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"UIR_PART\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sg_Torque_Gp\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sg_Force_Corr\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sg_Weldspot_Geo_Wear\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sg_Wear_Length\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sg_Beam_UpArching\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"CurrentCurve\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n        <span class=\"token number\">11621</span><span class=\"token punctuation\">,</span>\n        <span class=\"token number\">15434</span><span class=\"token punctuation\">,</span>\n        ...\n      <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"VoltageCurve\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n        <span class=\"token number\">39</span><span class=\"token punctuation\">,</span>\n        <span class=\"token number\">29</span><span class=\"token punctuation\">,</span>\n        ...\n      <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"ForceCurve\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n        <span class=\"token number\">49</span><span class=\"token punctuation\">,</span>\n        <span class=\"token number\">49</span><span class=\"token punctuation\">,</span>\n        ...\n      <span class=\"token punctuation\">]</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n</code></pre>\n<p>That's already very detailed, but it's unclear which device / welding spot the data comes from and what the timing of the curves was. Let's get some more structure in with PPMP!</p>\n<p>In PPMP, we have the option to differentiate between discrete manufacturing data (MES - part produced) by using the <a href=\"/unide/specification/measurement-message\">measurement-message</a> and detailed process data by using the <a href=\"https://www.eclipse.org/unide/specification/process-message\">process-message</a>. In the welding payload, that's all combined in one message. So we also want to split this payload into two.</p>\n<h2>Introducing Apache Camel</h2>\n<div class=\"card figure is-pulled-left\">\n\t<div class=\"card-image\">\n\t\t<figure class=\"image\">\n\t\t\t<img alt=\"Apache Camel\" title=\"Apache Camel\" src=\"/unide/images/blog/Transform-PPMP-with-camel-camel.png\"></img>\n\t\t</figure>\n\t</div>\n\t<div class=\"card-content\">\n\t\tApache Camel, <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">(Apache&nbsp;License&nbsp;2.0)</a>\n\t</div>\n</div>\n<p><a href=\"https://en.wikipedia.org/wiki/Apache_Camel\">Apache Camel</a> is a java-based Open Source framework, that can transform and route data. It supports most of the <a href=\"https://en.wikipedia.org/wiki/Enterprise_Integration_Patterns\">Enterprise Integration Patterns</a> and hundreds(!) of <a href=\"http://camel.apache.org/components.html\">connectors / components</a>. Think of it as an extensive transformation and workflow automation engine. In fact, it's so powerful and versatile, that it unfortunately doesn't come with a visual user interface or a plug-and-play installer. Luckily, for everyone who doesn't happen to be a java expert, there's also an xml configuration (via <a href=\"https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/xsd-configuration.html\">spring xml</a>). And that's mostly all we need!</p>\n<h2>Transforming the Communication Protocol</h2>\n<p>We will use Spring XML to configure Apache Camel. The workflow in Camel are called <code>&lt;routes&gt;</code>. So let's create a route that transforms our mqtt to REST protocol:</p>\n<pre class=\"language-xml\"><code class=\"language-xml\"><span class=\"token prolog\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>beans</span> <span class=\"token attr-name\">xmlns</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://www.springframework.org/schema/beans<span class=\"token punctuation\">\"</span></span>\n\t<span class=\"token attr-name\"><span class=\"token namespace\">xmlns:</span>xsi</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://www.w3.org/2001/XMLSchema-instance<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\"><span class=\"token namespace\">xmlns:</span>camel</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://camel.apache.org/schema/spring<span class=\"token punctuation\">\"</span></span>\n\t<span class=\"token attr-name\"><span class=\"token namespace\">xmlns:</span>util</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://www.springframework.org/schema/util<span class=\"token punctuation\">\"</span></span>\n\t<span class=\"token attr-name\"><span class=\"token namespace\">xsi:</span>schemaLocation</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://www.springframework.org/schema/util\n\thttp://www.springframework.org/schema/util/spring-util.xsd \n\thttp://www.springframework.org/schema/beans\n    http://www.springframework.org/schema/beans/spring-beans.xsd\n    http://camel.apache.org/schema/spring\n    http://camel.apache.org/schema/spring/camel-spring.xsd<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>camelContext</span> <span class=\"token attr-name\">xmlns</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://camel.apache.org/schema/spring<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>route</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>from</span>\n\t\t\t\t<span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>mqtt://psi6000?host=tcp://192.168.123.135:1883<span class=\"token entity\" title=\"&amp;\">&amp;amp;</span>subscribeTopicName=PSI6000//PROCESS/PPMP/PROCESS<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>to</span>\n\t\t\t\t<span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>jetty:http://unide.eclipse.org:8080/rest/v2/measurement?bridgeEndpoint=true<span class=\"token entity\" title=\"&amp;\">&amp;amp;</span>throwExceptionOnFailure=true<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">/></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>route</span><span class=\"token punctuation\">></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>camelContext</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>beans</span><span class=\"token punctuation\">></span></span>\n</code></pre>\n<p>That's it! A <code>&lt;route&gt;</code> that reads<code>&lt;from&gt;</code> mqtt and forwards <code>&lt;to&gt;</code> http. Not so difficult, is it? We could use many of the other <a href=\"http://camel.apache.org/components.html\">connectors / components</a> in the example above as well to transform from/to different protocols.</p>\n<p>But wait! The welding payload above was not PPMP. So we also need to normalize the payload.</p>\n<h2>Normalizing the Payload</h2>\n<p>Now that we can easily convert protocols, let's address the structure of the payload. Overall, we want to have a workflow that looks as described in the diagram below:</p>\n<div class=\"card figure\">\n\t<div class=\"card-image\">\n\t\t<figure class=\"image\">\n\t\t\t<img alt=\"data workflow\" title=\"data workflow\" src=\"/unide/images/blog/Transform-PPMP-with-camel-1.svg\"></img>\n\t\t</figure>\n\t</div>\n\t<div class=\"card-content\">\n\t\tWorkflow to extract the data from controller, convert it and send the data to the cloud application\n\t</div>\n</div>\n<p>The extra steps here are:</p>\n<ol>\n<li>transform the PSI 6000 JSON String payload to a java object</li>\n<li>transform the PSI 6000 java object to two PPMP-java objects (<a href=\"/unide/specification/measurement-message\">measurement-message</a> and <a href=\"https://www.eclipse.org/unide/specification/process-message\">process-message</a>)</li>\n<li>split up the two PPMP objects</li>\n<li>route the objects individually</li>\n<li>transform each PPMP object back to a String</li>\n</ol>\n<h3>Create the PSI 6000 Java Object</h3>\n<p>Luckily, there are helpers for transforming json (or xml) to plain old java objects (POJOs). We are using <a href=\"http://www.jsonschema2pojo.org/\">jsonschema2pojo</a> to convert the above json sample to POJOs with Jackson 2.x annotation. I name the resulting data type class <code>PSI6000DataType</code> and organize it in the package <code>org.eclipse.iot.unide.integrators</code>. Based on the given testdata, jsonschema2pojo cannot fully deduct all attribute types correctly. In order to allow floating point values, we would rename all <code>Integer</code> and <code>Object</code> types to <code>Number</code> in the WeldLog.java file. Also in the same file, we would change the type of the <code>dateTime</code> field from String to <code>LocalDateTime</code> to be more accurate:</p>\n<pre class=\"language-java\"><code class=\"language-java\"><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span>\n<span class=\"token annotation punctuation\">@JsonProperty</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"dateTime\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token annotation punctuation\">@JsonSerialize</span><span class=\"token punctuation\">(</span>using <span class=\"token operator\">=</span> LocalDateTimeSerializer<span class=\"token punctuation\">.</span><span class=\"token keyword\">class</span><span class=\"token punctuation\">)</span>\n<span class=\"token annotation punctuation\">@JsonDeserialize</span><span class=\"token punctuation\">(</span>using <span class=\"token operator\">=</span> LocalDateTimeDeserializer<span class=\"token punctuation\">.</span><span class=\"token keyword\">class</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">private</span> LocalDateTime dateTime<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span>\n</code></pre>\n<p>For that, we also need to include the respective imports:</p>\n<pre class=\"language-java\"><code class=\"language-java\"><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span>\n<span class=\"token keyword\">import</span> com<span class=\"token punctuation\">.</span>fasterxml<span class=\"token punctuation\">.</span>jackson<span class=\"token punctuation\">.</span>databind<span class=\"token punctuation\">.</span>annotation<span class=\"token punctuation\">.</span>JsonDeserialize<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> com<span class=\"token punctuation\">.</span>fasterxml<span class=\"token punctuation\">.</span>jackson<span class=\"token punctuation\">.</span>databind<span class=\"token punctuation\">.</span>annotation<span class=\"token punctuation\">.</span>JsonSerialize<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> com<span class=\"token punctuation\">.</span>fasterxml<span class=\"token punctuation\">.</span>jackson<span class=\"token punctuation\">.</span>datatype<span class=\"token punctuation\">.</span>jsr310<span class=\"token punctuation\">.</span>deser<span class=\"token punctuation\">.</span>LocalDateTimeDeserializer<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> com<span class=\"token punctuation\">.</span>fasterxml<span class=\"token punctuation\">.</span>jackson<span class=\"token punctuation\">.</span>datatype<span class=\"token punctuation\">.</span>jsr310<span class=\"token punctuation\">.</span>ser<span class=\"token punctuation\">.</span>LocalDateTimeSerializer<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span>\n</code></pre>\n<p>and adjust the getter (<code>getDateTime()</code>), setter (<code>setDateTime()</code>) and the type in the constructor (<code>public WeldLog(...)</code>) accordingly.</p>\n<p>Camel will be able to transform (&quot;<em>unmarshal</em>&quot;) this datatype from a string to a POJO after adding the definition to the above Spring XML:</p>\n<pre class=\"language-xml\"><code class=\"language-xml\">...\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>camelContext</span> <span class=\"token attr-name\">xmlns</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://camel.apache.org/schema/spring<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>dataFormats</span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>json</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>psi6000<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">library</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Jackson<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\">unmarshalTypeName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>org.eclipse.iot.unide.integrators.PSI6000DataType<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>dataFormats</span><span class=\"token punctuation\">></span></span>\n\t...\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>camelContext</span><span class=\"token punctuation\">></span></span>\n</code></pre>\n<h3>Use unide.java binding for PPMP Java Objects</h3>\n<p>For eventually transforming the PPMP objects back to String (&quot;<em>marshal</em>&quot;), we can make use of the <a href=\"https://github.com/eclipse/unide.java\">unide PPMP java binding</a>. Just adjust the dataFormats section of the Spring XML so that it reads:</p>\n<pre class=\"language-xml\"><code class=\"language-xml\">...\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>camelContext</span> <span class=\"token attr-name\">xmlns</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://camel.apache.org/schema/spring<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>dataFormats</span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>json</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>psi6000<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">library</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Jackson<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\">unmarshalTypeName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>org.eclipse.iot.unide.integrators.PSI6000DataType<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>json</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>ppmpMeasurementMessage<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">library</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Jackson<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\">unmarshalTypeName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>org.eclipse.iot.unide.ppmp.measurements.MeasurementsWrapper<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\">moduleClassNames</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>com.fasterxml.jackson.datatype.jsr310.JavaTimeModule<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\">disableFeatures</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>WRITE_DATES_AS_TIMESTAMPS<span class=\"token punctuation\">\"</span></span> \n\t\t\t<span class=\"token attr-name\">include</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>NON_NULL<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">/></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>json</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>ppmpProcessMessage<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">library</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Jackson<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\">unmarshalTypeName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>org.eclipse.iot.unide.ppmp.process.ProcessWrapper<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\">moduleClassNames</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>com.fasterxml.jackson.datatype.jsr310.JavaTimeModule<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\">disableFeatures</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>WRITE_DATES_AS_TIMESTAMPS<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\">include</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>NON_NULL<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>dataFormats</span><span class=\"token punctuation\">></span></span>\n\t...\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>camelContext</span><span class=\"token punctuation\">></span></span>\n</code></pre>\n<h3>Create the Workflow</h3>\n<p>In order to better structure data flow, we use multiple <code>&lt;route&gt;</code>-s: one for retrieving the data and two more after the split of the payload. They are connected via the virtual camel protocol &quot;<em>direct</em>&quot;. In the following Spring XML, you can also find some <code>&lt;log&gt;</code> points and additional steps to set http header (<code>&lt;setHeader&gt;</code>) for posting to the unide server:</p>\n<pre class=\"language-xml\"><code class=\"language-xml\"><span class=\"token prolog\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>beans</span> <span class=\"token attr-name\">xmlns</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://www.springframework.org/schema/beans<span class=\"token punctuation\">\"</span></span>\n\t<span class=\"token attr-name\"><span class=\"token namespace\">xmlns:</span>xsi</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://www.w3.org/2001/XMLSchema-instance<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\"><span class=\"token namespace\">xmlns:</span>camel</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://camel.apache.org/schema/spring<span class=\"token punctuation\">\"</span></span>\n\t<span class=\"token attr-name\"><span class=\"token namespace\">xmlns:</span>util</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://www.springframework.org/schema/util<span class=\"token punctuation\">\"</span></span>\n\t<span class=\"token attr-name\"><span class=\"token namespace\">xsi:</span>schemaLocation</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://www.springframework.org/schema/util\n\thttp://www.springframework.org/schema/util/spring-util.xsd \n\thttp://www.springframework.org/schema/beans\n    http://www.springframework.org/schema/beans/spring-beans.xsd\n    http://camel.apache.org/schema/spring\n    http://camel.apache.org/schema/spring/camel-spring.xsd<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>bean</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>psi6000-to-ppmp<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>org.eclipse.iot.unide.integrators.PSI6000<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>bean</span><span class=\"token punctuation\">></span></span>\n\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>camelContext</span> <span class=\"token attr-name\">xmlns</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://camel.apache.org/schema/spring<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>dataFormats</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>json</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>psi6000<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">library</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Jackson<span class=\"token punctuation\">\"</span></span>\n\t\t\t\t<span class=\"token attr-name\">unmarshalTypeName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>org.eclipse.iot.unide.integrators.PSI6000DataType<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>json</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>ppmpMeasurementMessage<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">library</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Jackson<span class=\"token punctuation\">\"</span></span>\n\t\t\t\t<span class=\"token attr-name\">unmarshalTypeName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>org.eclipse.iot.unide.ppmp.measurements.MeasurementsWrapper<span class=\"token punctuation\">\"</span></span>\n\t\t\t\t<span class=\"token attr-name\">moduleClassNames</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>com.fasterxml.jackson.datatype.jsr310.JavaTimeModule<span class=\"token punctuation\">\"</span></span>\n\t\t\t\t<span class=\"token attr-name\">disableFeatures</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>WRITE_DATES_AS_TIMESTAMPS<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">include</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>NON_NULL<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>json</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>ppmpProcessMessage<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">library</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Jackson<span class=\"token punctuation\">\"</span></span>\n\t\t\t\t<span class=\"token attr-name\">unmarshalTypeName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>org.eclipse.iot.unide.ppmp.process.ProcessWrapper<span class=\"token punctuation\">\"</span></span>\n\t\t\t\t<span class=\"token attr-name\">moduleClassNames</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>com.fasterxml.jackson.datatype.jsr310.JavaTimeModule<span class=\"token punctuation\">\"</span></span>\n\t\t\t\t<span class=\"token attr-name\">disableFeatures</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>WRITE_DATES_AS_TIMESTAMPS<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">include</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>NON_NULL<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>dataFormats</span><span class=\"token punctuation\">></span></span>\n\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>route</span> <span class=\"token attr-name\">autoStartup</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>true<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>from</span>\n\t\t\t\t<span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>mqtt://psi6000?host=tcp://192.168.123.135:1883<span class=\"token entity\" title=\"&amp;\">&amp;amp;</span>subscribeTopicName=PSI6000//PROCESS/PPMP/PROCESS<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>unmarshal</span> <span class=\"token attr-name\">ref</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>psi6000<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>bean</span> <span class=\"token attr-name\">ref</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>psi6000-to-ppmp<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>setHeader</span> <span class=\"token attr-name\">headerName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Content-Type<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>constant</span><span class=\"token punctuation\">></span></span>application/json; charset=utf-8<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>constant</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>setHeader</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>setHeader</span> <span class=\"token attr-name\">headerName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>CamelHttpMethod<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>constant</span><span class=\"token punctuation\">></span></span>POST<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>constant</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>setHeader</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>multicast</span><span class=\"token punctuation\">></span></span>\n\t\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>to</span> <span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>direct:measurement<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>to</span> <span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>direct:process<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>multicast</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>log</span> <span class=\"token attr-name\">message</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>done<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>setBody</span><span class=\"token punctuation\">></span></span>\n\t\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>simple</span><span class=\"token punctuation\">></span></span>{\"result\": true }<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>simple</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>setBody</span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>route</span><span class=\"token punctuation\">></span></span>\n\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>route</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>from</span> <span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>direct:measurement<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>setBody</span><span class=\"token punctuation\">></span></span>\n\t\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>simple</span><span class=\"token punctuation\">></span></span>${body[0]}<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>simple</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>setBody</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>log</span> <span class=\"token attr-name\">message</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>deviceId measurement: ${body.device.deviceID}<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>marshal</span> <span class=\"token attr-name\">ref</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>ppmpMeasurementMessage<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>log</span> <span class=\"token attr-name\">message</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>sending measurement<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>setHeader</span> <span class=\"token attr-name\">headerName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Content-Length<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>simple</span><span class=\"token punctuation\">></span></span>body.length<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>simple</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>setHeader</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>to</span>\n\t\t\t\t<span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>jetty:http://unide.eclipse.org:8080/rest/v2/measurement?bridgeEndpoint=true<span class=\"token entity\" title=\"&amp;\">&amp;amp;</span>throwExceptionOnFailure=true<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>log</span> <span class=\"token attr-name\">message</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>measurement sent<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>route</span><span class=\"token punctuation\">></span></span>\n\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>route</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>from</span> <span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>direct:process<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>setBody</span><span class=\"token punctuation\">></span></span>\n\t\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>simple</span><span class=\"token punctuation\">></span></span>${body[1]}<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>simple</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>setBody</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>log</span> <span class=\"token attr-name\">message</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>deviceId process: ${body.device.deviceID}<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>marshal</span> <span class=\"token attr-name\">ref</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>ppmpProcessMessage<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>log</span> <span class=\"token attr-name\">message</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>sending process<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>setHeader</span> <span class=\"token attr-name\">headerName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Content-Length<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>simple</span><span class=\"token punctuation\">></span></span>body.length<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>simple</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>setHeader</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>to</span>\n\t\t\t\t<span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>jetty:http://unide.eclipse.org:8080/rest/v2/process?bridgeEndpoint=true<span class=\"token entity\" title=\"&amp;\">&amp;amp;</span>throwExceptionOnFailure=true<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>log</span> <span class=\"token attr-name\">message</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>process sent<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>route</span><span class=\"token punctuation\">></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>camelContext</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>beans</span><span class=\"token punctuation\">></span></span>\n</code></pre>\n<p>You might have noticed that we have not yet discussed one important item in this workflow: how do we actually transform the payload from one format to another?</p>\n<h3>Transforming from PSI 6000 POJO to PPMP POJOs</h3>\n<p>One thing that we'll hardwire as java code is the transformation from the source to the target structure. The same functionality could be achieved with scripting components (e.g. <a href=\"http://camel.apache.org/groovy.html\">groovy</a>, but that would be less powerful and worse performance. Since we don't expect the format to change but mostly the workflow or endpoints, implementing a java bean is not too much effort. Here's how:<br>\nApache Camel offers a <code>Processor</code> interface that can be used to override the <code>process()</code> function. This function receives the complete message (<code>exchange</code>) and can modify it in any way. Since we have created the PSI 6000 Java Object already and want to produce PPMP java objects, the logic is mostly about creating the child objects and wiring the suitable getter to corresponding setter.</p>\n<pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">package</span> org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>integrators<span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">import</span> java<span class=\"token punctuation\">.</span>time<span class=\"token punctuation\">.</span>OffsetDateTime<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> java<span class=\"token punctuation\">.</span>time<span class=\"token punctuation\">.</span>ZoneOffset<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> java<span class=\"token punctuation\">.</span>util<span class=\"token punctuation\">.</span>Arrays<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> java<span class=\"token punctuation\">.</span>util<span class=\"token punctuation\">.</span>LinkedList<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> java<span class=\"token punctuation\">.</span>util<span class=\"token punctuation\">.</span>List<span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">import</span> org<span class=\"token punctuation\">.</span>apache<span class=\"token punctuation\">.</span>camel<span class=\"token punctuation\">.</span>Exchange<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> org<span class=\"token punctuation\">.</span>apache<span class=\"token punctuation\">.</span>camel<span class=\"token punctuation\">.</span>Message<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> org<span class=\"token punctuation\">.</span>apache<span class=\"token punctuation\">.</span>camel<span class=\"token punctuation\">.</span>Processor<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>commons<span class=\"token punctuation\">.</span>Device<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>commons<span class=\"token punctuation\">.</span>MetaData<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>MeasurementsWrapper<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>Process<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>ProcessWrapper<span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">import</span> com<span class=\"token punctuation\">.</span>fasterxml<span class=\"token punctuation\">.</span>jackson<span class=\"token punctuation\">.</span>core<span class=\"token punctuation\">.</span>JsonProcessingException<span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">PSI6000</span> <span class=\"token keyword\">implements</span> <span class=\"token class-name\">Processor</span> <span class=\"token punctuation\">{</span>\n\n\t<span class=\"token keyword\">public</span> <span class=\"token function\">PSI6000</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n\n\t<span class=\"token keyword\">private</span> org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>SeriesMap <span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>\n\t\t\torg<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>SeriesMap map<span class=\"token punctuation\">,</span> String name<span class=\"token punctuation\">,</span> Number value<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>value <span class=\"token operator\">!=</span> null<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\tmap<span class=\"token punctuation\">.</span><span class=\"token function\">setSeriesValue</span><span class=\"token punctuation\">(</span>name<span class=\"token punctuation\">,</span> Arrays<span class=\"token punctuation\">.</span><span class=\"token function\">asList</span><span class=\"token punctuation\">(</span>value<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n\t\t<span class=\"token keyword\">return</span> map<span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n\n\t<span class=\"token annotation punctuation\">@Override</span>\n\t<span class=\"token keyword\">public</span> <span class=\"token keyword\">void</span> <span class=\"token function\">process</span><span class=\"token punctuation\">(</span>Exchange exchange<span class=\"token punctuation\">)</span> <span class=\"token keyword\">throws</span> JsonProcessingException<span class=\"token punctuation\">,</span> Exception <span class=\"token punctuation\">{</span>\n\t\tMessage msg <span class=\"token operator\">=</span> exchange<span class=\"token punctuation\">.</span><span class=\"token function\">getIn</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tPSI6000DataType doc <span class=\"token operator\">=</span> msg<span class=\"token punctuation\">.</span><span class=\"token function\">getBody</span><span class=\"token punctuation\">(</span>PSI6000DataType<span class=\"token punctuation\">.</span><span class=\"token keyword\">class</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\tObject <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>bundle <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Object</span><span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\t\tbundle<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span>       <span class=\"token operator\">=</span> <span class=\"token function\">transformMeasurement</span><span class=\"token punctuation\">(</span>doc<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tbundle<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>       <span class=\"token operator\">=</span> <span class=\"token function\">transformProcess</span><span class=\"token punctuation\">(</span>doc<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tmsg<span class=\"token punctuation\">.</span><span class=\"token function\">setBody</span><span class=\"token punctuation\">(</span>bundle<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\texchange<span class=\"token punctuation\">.</span><span class=\"token function\">setOut</span><span class=\"token punctuation\">(</span>msg<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n\n\t<span class=\"token keyword\">private</span> <span class=\"token keyword\">void</span> <span class=\"token function\">setSpotName</span><span class=\"token punctuation\">(</span>Device device<span class=\"token punctuation\">,</span> WeldLog wl<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\tString spotName <span class=\"token operator\">=</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSpotName</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>spotName <span class=\"token operator\">!=</span> null <span class=\"token operator\">&amp;&amp;</span> spotName<span class=\"token punctuation\">.</span><span class=\"token function\">length</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">></span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\tMetaData md <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">MetaData</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\tmd<span class=\"token punctuation\">.</span><span class=\"token function\">setMetaDataValue</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"spotName\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSpotName</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\tdevice<span class=\"token punctuation\">.</span><span class=\"token function\">setMetaData</span><span class=\"token punctuation\">(</span>md<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n\t<span class=\"token punctuation\">}</span>\n\n\t<span class=\"token keyword\">private</span> ProcessWrapper <span class=\"token function\">transformProcess</span><span class=\"token punctuation\">(</span>PSI6000DataType doc<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\tProcessWrapper wrapper <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">ProcessWrapper</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tWeldLog wl <span class=\"token operator\">=</span> doc<span class=\"token punctuation\">.</span><span class=\"token function\">getMessage</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">getWeldLog</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tOffsetDateTime odt <span class=\"token operator\">=</span> OffsetDateTime<span class=\"token punctuation\">.</span><span class=\"token function\">of</span><span class=\"token punctuation\">(</span>wl<span class=\"token punctuation\">.</span><span class=\"token function\">getDateTime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> ZoneOffset<span class=\"token punctuation\">.</span>UTC<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token comment\">// device</span>\n\t\tDevice device <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Device</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tdevice<span class=\"token punctuation\">.</span><span class=\"token function\">setDeviceID</span><span class=\"token punctuation\">(</span>doc<span class=\"token punctuation\">.</span><span class=\"token function\">getMessage</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">getWeldLog</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">getTimerName</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">setSpotName</span><span class=\"token punctuation\">(</span>device<span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\twrapper<span class=\"token punctuation\">.</span><span class=\"token function\">setDevice</span><span class=\"token punctuation\">(</span>device<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token comment\">// part</span>\n\t\tString partId <span class=\"token operator\">=</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPartIdentString</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>partId <span class=\"token operator\">!=</span> null <span class=\"token operator\">&amp;&amp;</span> partId<span class=\"token punctuation\">.</span><span class=\"token function\">length</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">></span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\torg<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>Part part <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>Part</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\tpart<span class=\"token punctuation\">.</span><span class=\"token function\">setPartID</span><span class=\"token punctuation\">(</span>partId<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\twrapper<span class=\"token punctuation\">.</span><span class=\"token function\">setPart</span><span class=\"token punctuation\">(</span>part<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n\n\t\t<span class=\"token comment\">// process</span>\n\t\tProcess process <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Process</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tprocess<span class=\"token punctuation\">.</span><span class=\"token function\">setTimestamp</span><span class=\"token punctuation\">(</span>odt<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tprocess<span class=\"token punctuation\">.</span><span class=\"token function\">setExternalProcessId</span><span class=\"token punctuation\">(</span>String<span class=\"token punctuation\">.</span><span class=\"token function\">valueOf</span><span class=\"token punctuation\">(</span>wl<span class=\"token punctuation\">.</span><span class=\"token function\">getProtRecordID</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\twrapper<span class=\"token punctuation\">.</span><span class=\"token function\">setProcess</span><span class=\"token punctuation\">(</span>process<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token comment\">// measurements</span>\n\t\tList<span class=\"token operator\">&lt;</span>org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>Measurements<span class=\"token operator\">></span> measurements <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">LinkedList</span><span class=\"token operator\">&lt;</span>org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>Measurements<span class=\"token operator\">></span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\torg<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>Measurements measurement <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>Measurements</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\n\t\tmeasurement<span class=\"token punctuation\">.</span><span class=\"token function\">setTimestamp</span><span class=\"token punctuation\">(</span>odt<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token comment\">//values</span>\n\t\torg<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>SeriesMap seriesMap <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>SeriesMap</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tseriesMap<span class=\"token punctuation\">.</span><span class=\"token function\">setSeriesValue</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"curentCurve\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getCurrentCurve</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tseriesMap<span class=\"token punctuation\">.</span><span class=\"token function\">setSeriesValue</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"voltageCurve\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getVoltageCurve</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tseriesMap<span class=\"token punctuation\">.</span><span class=\"token function\">setSeriesValue</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"forceCurve\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getForceCurve</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\n\t\tmeasurement<span class=\"token punctuation\">.</span><span class=\"token function\">setSeriesMap</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tmeasurements<span class=\"token punctuation\">.</span><span class=\"token function\">add</span><span class=\"token punctuation\">(</span>measurement<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\twrapper<span class=\"token punctuation\">.</span><span class=\"token function\">setMeasurements</span><span class=\"token punctuation\">(</span>measurements<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\n\t\t<span class=\"token keyword\">return</span> wrapper<span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n\n\t<span class=\"token keyword\">private</span> MeasurementsWrapper <span class=\"token function\">transformMeasurement</span><span class=\"token punctuation\">(</span>PSI6000DataType doc<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\tMeasurementsWrapper wrapper <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">MeasurementsWrapper</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tWeldLog wl <span class=\"token operator\">=</span> doc<span class=\"token punctuation\">.</span><span class=\"token function\">getMessage</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">getWeldLog</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token comment\">// device</span>\n\t\tDevice device <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Device</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tdevice<span class=\"token punctuation\">.</span><span class=\"token function\">setDeviceID</span><span class=\"token punctuation\">(</span>doc<span class=\"token punctuation\">.</span><span class=\"token function\">getMessage</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">getWeldLog</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">getTimerName</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">setSpotName</span><span class=\"token punctuation\">(</span>device<span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\twrapper<span class=\"token punctuation\">.</span><span class=\"token function\">setDevice</span><span class=\"token punctuation\">(</span>device<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token comment\">// part</span>\n\t\tString partId <span class=\"token operator\">=</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPartIdentString</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>partId <span class=\"token operator\">!=</span> null <span class=\"token operator\">&amp;&amp;</span> partId<span class=\"token punctuation\">.</span><span class=\"token function\">length</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">></span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\torg<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>Part part <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>Part</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\tpart<span class=\"token punctuation\">.</span><span class=\"token function\">setPartID</span><span class=\"token punctuation\">(</span>partId<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\twrapper<span class=\"token punctuation\">.</span><span class=\"token function\">setPart</span><span class=\"token punctuation\">(</span>part<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n\n\t\t<span class=\"token comment\">// measurements</span>\n\t\tList<span class=\"token operator\">&lt;</span>org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>Measurements<span class=\"token operator\">></span> measurements <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">LinkedList</span><span class=\"token operator\">&lt;</span>org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>Measurements<span class=\"token operator\">></span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\torg<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>Measurements measurement <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>Measurements</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\tmeasurement<span class=\"token punctuation\">.</span><span class=\"token function\">setTimestamp</span><span class=\"token punctuation\">(</span>OffsetDateTime<span class=\"token punctuation\">.</span><span class=\"token function\">of</span><span class=\"token punctuation\">(</span>wl<span class=\"token punctuation\">.</span><span class=\"token function\">getDateTime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> ZoneOffset<span class=\"token punctuation\">.</span>UTC<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token comment\">// values</span>\n\t\torg<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>SeriesMap seriesMap <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>SeriesMap</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tseriesMap<span class=\"token punctuation\">.</span><span class=\"token function\">setSeriesValue</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"$_time\"</span><span class=\"token punctuation\">,</span> Arrays<span class=\"token punctuation\">.</span><span class=\"token function\">asList</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"wear\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWear</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"wearPerCent\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWearPerCent</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"monitorState\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getMonitorState</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regulationState\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegulationState</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"measureState\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getMeasureState</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"powerState\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPowerState</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sequenceState\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSequenceState</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sequenceStateAdd\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSequenceStateAdd</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sequenceRepeat\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSequenceRepeat</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"monitorMode\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getMonitorMode</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"iDemandStd\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getIDemandStd</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"ilsts\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getIlsts</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regulationStd\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegulationStd</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"iDemand1\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getIDemand1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"iActual1\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getIActual1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regulation1\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegulation1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"iDemand2\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getIDemand2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"iActual2\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getIActual2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regulation2\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegulation2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"iDemand3\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getIDemand3</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"iActual3\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getIActual3</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regulation3\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegulation3</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"phaStd\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPhaStd</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"pha1\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPha1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"pha2\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPha2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"pha3\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPha3</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"t_iDemandStd\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getIDemandStd</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"tActualStd\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getTActualStd</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token comment\">// addMeasurementPoint(seriesMap, \"partIdentString\",</span>\n\t\t<span class=\"token comment\">// wl.getPartIdentString());</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"tipDressCounter\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getTipDressCounter</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"electrodeNo\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getElectrodeNo</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgForceSetPoint\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgForceSetPoint</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgSheetThicknessSetPoint\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgSheetThicknessSetPoint</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgSagGpSetPoint\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgSagGpSetPoint</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgSpotWithSg\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgSpotWithSg</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgMotorCurrent\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgMotorCurrent</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgMotorTemp\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgMotorTemp</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgForce\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgForce</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgSheetThickness\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgSheetThickness</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgSagGp\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgSagGp</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgSagGc\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgSagGc</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regUsrUspJunction\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegUsrUspJunction</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regUsrUspMax\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegUsrUspMax</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regSpotDiaActual\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegSpotDiaActual</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regSpotDiaMinDemand\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegSpotDiaMinDemand</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regSplashTime\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegSplashTime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"nuggetDiameter\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getNuggetDiameter</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"usp\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUsp</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"normingTime\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getNormingTime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regulationStartTime\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegulationStartTime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"returnToConstantCurrent\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getReturnToConstantCurrent</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"declineUsp\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getDeclineUsp</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"offsetUsp\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getOffsetUsp</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"currentFactor\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getCurrentFactor</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"triggerTime\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getTriggerTime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"xqrMeasuringActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getXqrMeasuringActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"xqrRegulationActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getXqrRegulationActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"xqrMonitoringActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getXqrMonitoringActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"xqrWeldTimeProlongationActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getXqrWeldTimeProlongationActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"voltageActualValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getVoltageActualValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"voltageRefValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getVoltageRefValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"currentActualValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getCurrentActualValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"currentReferenceValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getCurrentReferenceValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldTimeActualValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldTimeActualValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldTimeRefValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldTimeRefValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"energyActualValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getEnergyActualValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"energyRefValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getEnergyRefValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"powerActualValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPowerActualValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"powerRefValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPowerRefValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"resistanceActualValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getResistanceActualValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"resistanceRefValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getResistanceRefValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"pulseWidthActualValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPulseWidthActualValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"pulseWidthRefValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPulseWidthRefValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"stabilisationFactorActValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getStabilisationFactorActValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"stabilisationFactorRefValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getStabilisationFactorRefValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"thresholdStabilisationFactor\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getThresholdStabilisationFactor</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"wldEffectStabilisationFactor\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWldEffectStabilisationFactor</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uipActualValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUipActualValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uipRefValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUipRefValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirExpulsionTime\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirExpulsionTime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirMeasuringActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirMeasuringActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirRegulationActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirRegulationActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirMonitoringActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirMonitoringActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirWeldTimeProlongationActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirWeldTimeProlongationActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirQStoppRefCntValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirQStoppRefCntValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirQStoppActCntValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirQStoppActCntValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirUipUpperTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirUipUpperTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirUipLowerTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirUipLowerTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirUipCondTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirUipCondTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirPsfLowerTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirPsfLowerTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirPsfCondTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirPsfCondTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_1\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP161</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_2\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP162</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_3\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP163</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_4\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP164</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_5\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP165</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP32_6\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP326</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_7\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP167</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_8\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP168</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_9\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP169</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_10\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP1610</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_11\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP1611</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP32_12\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP3212</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_13\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP1613</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_14\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP1614</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_15\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP1615</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_16\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP1616</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_17\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP1617</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP32_18\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP3218</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uipMonCondUpperTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUipMonCondUpperTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"fqfActualValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getFqfActualValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"fqfRefValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getFqfRefValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"fqfMonUpperTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getFqfMonUpperTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"fqfMonLowerTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getFqfMonLowerTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"fqfMonCondUpperTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getFqfMonCondUpperTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"fqfMonCondLowerTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getFqfMonCondLowerTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"fqfMeasuringActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getFqfMeasuringActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"xqrModeOff\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getXqrModeOff</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"reweldActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getReweldActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token comment\">// addMeasurementPoint(seriesMap, \"weldspotRefIdent\",</span>\n\t\t<span class=\"token comment\">// wl.getWeldspotRefIdent());</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sg_Torque_Gp\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgTorqueGp</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sg_Force_Corr\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgForceCorr</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sg_Weldspot_Geo_Wear\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgWeldspotGeoWear</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sg_Wear_Length\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgWearLength</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sg_Beam_UpArching\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgBeamUpArching</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\tmeasurement<span class=\"token punctuation\">.</span><span class=\"token function\">setSeriesMap</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tmeasurements<span class=\"token punctuation\">.</span><span class=\"token function\">add</span><span class=\"token punctuation\">(</span>measurement<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\twrapper<span class=\"token punctuation\">.</span><span class=\"token function\">setMeasurements</span><span class=\"token punctuation\">(</span>measurements<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token keyword\">return</span> wrapper<span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n</code></pre>\n<h1>Summary</h1>\n<p>It takes a while to understand the involved software components. Yet, once the set up is running, it gets much easier to adapt it to another Use Case. And another. The pattern of wiring protocols and transforming the payload is very similar. The involved frameworks are powerful enough to support many Use Cases. This article is supposed to show that there are simple possibilities to transform transport protocols and payloads, so that you can focus on addressing functional challenges.</p>\n","url":"/blog/2018/2/11/Transform-PPMP-with-camel","title":"PPMP Use Cases: Simple Transformation with Apache Camel","date":"2018-02-11T00:00:00.000Z","tags":["use cases"],"prev":{"url":"/blog/2018/1/26/New-website","title":"Updated Website"},"next":{"url":"/blog/2018/2/13/grinding-machine-scenario","title":"PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed"}}
\ No newline at end of file
+{"name":"Transform-PPMP-with-camel","content":"<p>The Production Performance Management Protocol (PPMP) is a simple structure to send out machine data. Unide, as its hosting project, is supposed to provide exemplary implementations.</p>\n<p>We have already published <a href=\"https://github.com/eclipse/unide/tree/master/servers/rest\">a REST server</a>, <a href=\"https://github.com/eclipse/unide.java\">java-</a> and <a href=\"https://github.com/eclipse/unide.python\">python-</a> bindings and an <a href=\"https://github.com/eclipse/unide/tree/master/clients/binsa\">html5-client</a>. But how are these implementations used in real life?</p>\n<h1>The Challenge</h1>\n<div class=\"card figure\">\n\t<div class=\"card-image\">\n\t\t<figure class=\"image\">\n\t\t\t<img alt=\"Welding robots\" title=\"BMW plant, spot welding\" src=\"/unide/images/blog/Transform-PPMP-with-camel-welding.jpg\"></img>\n\t\t</figure>\n\t</div>\n\t<div class=\"card-content\">\n\t\tBMW plant in Leipzig, Germany: Spot welding <a href=\"https://creativecommons.org/licenses/by-sa/2.0/de/deed.en\">(CC BY-SA 2.0 DE)</a>\n\t</div>\n</div>\n<p>In the automotive industry, <a href=\"https://en.wikipedia.org/wiki/Spot_welding\">welding spots</a> are crucial for the quality of a car and the security of the passenger. In modern production lines, hundreds of welding spots have to be precisely set in a single shift. In order to reduce product rework, scrap, destructible tests and machine downtime, the quality should be monitored consistently. That's what special welding controller in machines do. Unfortunately, this data is often only used locally, for a short period of time and in proprietary formats. Just enough to determine the immediate process outcome. In that case, further opportunities of analysing the information are not taken. With the continuous increase in complexity, price and time pressure, the demand for further processing and optimization grows. The data could be used to prevent or even predict maintenance or just store the data in long time archives in case of legal disputes.</p>\n<p>One prerequisite for such connectivity is the hardware and its connectivity. Older generations of welding controllers can only be accessed with proprietary stacks (like the <a href=\"https://www.boschrexroth.com/en/xc/products/product-groups/welding-technology/controllers-with-power-section/mf-system-psi6000/index\">PSI 6000</a>) whereas newer generations (like the <a href=\"https://www.boschrexroth.com/en/xc/company/press/index2-29696\">PRC 7000</a>) are much more flexible in terms of networking and communication. In general, there are two aspects that make up the communication: the transport protocol and the structure of the payload. This is similar to our daily life: if you want to chat with your friends, you need to use the same messenger or communication technology (phone, email) and you need speak the same language (English, German etc.).</p>\n<p>In the following sections, let's assume we need to transform the transport protocol as well as the payload. The data is generated by a welding controller and should be passed to <a href=\"https://unide.eclipse.org\">the unide REST server</a> for persisting it in a dedicated timeseries database.</p>\n<h1>The Approach</h1>\n<p>We want to find a way to receive the data, transform it into Production Performance Management Protocol and store it into a database in our <a href=\"https://unide.eclipse.org\">REST Server</a>.</p>\n<p>First, we need to understand which interfaces the controller has, which communication protocol is used, and how the payload would be interpreted. In the case of the PSI 6000, it was configured to publish the quality data to a <a href=\"https://de.wikipedia.org/wiki/MQTT\">mqtt</a> message broker (here: <a href=\"https://mosquitto.org/\">Eclipse mosquitto</a>). We don't have an extensive documentation of the payload, but we can look at samples of it (some Curve data shortened at the end):</p>\n<pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"Name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"WeldLog/UIR Testrack 24/\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"WeldTimer\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"UIR Testrack 24\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"TimeStamp\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2018-01-17T10:41:00.0008436+01:00\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"OutputFormat\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"JSON\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"Message\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"WeldLog\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"protRecord_ID\"</span><span class=\"token operator\">:</span> <span class=\"token number\">734827</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"dateTime\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2018-01-15T16:52:32.09\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"timerName\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"UIR Testrack 24\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"progNo\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"spotName\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"wear\"</span><span class=\"token operator\">:</span> <span class=\"token number\">8312480</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"wearPerCent\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"monitorState\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regulationState\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"measureState\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"powerState\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sequenceState\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sequenceStateAdd\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sequenceRepeat\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"monitorMode\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"iDemandStd\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"ilsts\"</span><span class=\"token operator\">:</span> <span class=\"token number\">13.14</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regulationStd\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"iDemand1\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"iActual1\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regulation1\"</span><span class=\"token operator\">:</span> <span class=\"token number\">4</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"iDemand2\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"iActual2\"</span><span class=\"token operator\">:</span> <span class=\"token number\">13.16</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regulation2\"</span><span class=\"token operator\">:</span> <span class=\"token number\">4</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"iDemand3\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"iActual3\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regulation3\"</span><span class=\"token operator\">:</span> <span class=\"token number\">4</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"phaStd\"</span><span class=\"token operator\">:</span> <span class=\"token number\">24.96</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pha1\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pha2\"</span><span class=\"token operator\">:</span> <span class=\"token number\">24.64</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pha3\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"t_iDemandStd\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"tActualStd\"</span><span class=\"token operator\">:</span> <span class=\"token number\">878</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"partIdentString\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"tipDressCounter\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"electrodeNo\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgForceSetPoint\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgSheetThicknessSetPoint\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgSagGpSetPoint\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgSpotWithSg\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgMotorCurrent\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgMotorTemp\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgForce\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgSheetThickness\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgSagGp\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sgSagGc\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regUsrUspJunction\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regUsrUspMax\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regSpotDiaActual\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regSpotDiaMinDemand\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regSplashTime\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"nuggetDiameter\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"usp\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"normingTime\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"regulationStartTime\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"returnToConstantCurrent\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"declineUsp\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"offsetUsp\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"currentFactor\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"triggerTime\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"xqrMeasuringActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"xqrRegulationActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"xqrMonitoringActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"xqrWeldTimeProlongationActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"voltageActualValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0.03</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"voltageRefValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0.03</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"currentActualValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">13.17</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"currentReferenceValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">13.95</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldTimeActualValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">876</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldTimeRefValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">760</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"energyActualValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">395.1261</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"energyRefValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">342</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"powerActualValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">395.133</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"powerRefValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">449.35</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"resistanceActualValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"resistanceRefValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pulseWidthActualValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">25.02</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pulseWidthRefValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">26.19</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"stabilisationFactorActValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">55</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"stabilisationFactorRefValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"thresholdStabilisationFactor\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"wldEffectStabilisationFactor\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uipActualValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">126</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uipRefValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirExpulsionTime\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirMeasuringActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirRegulationActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirMonitoringActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirWeldTimeProlongationActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirQStoppRefCntValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">9</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirQStoppActCntValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirUipUpperTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirUipLowerTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirUipCondTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirPsfLowerTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uirPsfCondTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_1\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_2\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_3\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_4\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_5\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP32_6\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_7\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_8\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_9\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_10\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_11\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP32_12\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_13\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_14\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_15\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_16\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP16_17\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldSpotCustDataP32_18\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"uipMonCondUpperTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fqfActualValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fqfRefValue\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fqfMonUpperTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fqfMonLowerTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fqfMonCondUpperTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fqfMonCondLowerTol\"</span><span class=\"token operator\">:</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fqfMeasuringActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"xqrModeOff\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"reweldActive\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"weldspotRefIdent\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"UIR_PART\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sg_Torque_Gp\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sg_Force_Corr\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sg_Weldspot_Geo_Wear\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sg_Wear_Length\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sg_Beam_UpArching\"</span><span class=\"token operator\">:</span> <span class=\"token null\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"CurrentCurve\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n        <span class=\"token number\">11621</span><span class=\"token punctuation\">,</span>\n        <span class=\"token number\">15434</span><span class=\"token punctuation\">,</span>\n        ...\n      <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"VoltageCurve\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n        <span class=\"token number\">39</span><span class=\"token punctuation\">,</span>\n        <span class=\"token number\">29</span><span class=\"token punctuation\">,</span>\n        ...\n      <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"ForceCurve\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n        <span class=\"token number\">49</span><span class=\"token punctuation\">,</span>\n        <span class=\"token number\">49</span><span class=\"token punctuation\">,</span>\n        ...\n      <span class=\"token punctuation\">]</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n</code></pre>\n<p>That's already very detailed, but it's unclear which device / welding spot the data comes from and what the timing of the curves was. Let's get some more structure in with PPMP!</p>\n<p>In the Production Performance Management Protocol, we have the option to differentiate between discrete manufacturing data (MES - part produced) by using the <a href=\"/unide/specification/measurement-message\">measurement-message</a> and detailed process data by using the <a href=\"https://www.eclipse.org/unide/specification/process-message\">process-message</a>. In the welding payload, that's all combined in one message. So we also want to split this payload into two.</p>\n<h2>Introducing Apache Camel</h2>\n<div class=\"card figure is-pulled-left\">\n\t<div class=\"card-image\">\n\t\t<figure class=\"image\">\n\t\t\t<img alt=\"Apache Camel\" title=\"Apache Camel\" src=\"/unide/images/blog/Transform-PPMP-with-camel-camel.png\"></img>\n\t\t</figure>\n\t</div>\n\t<div class=\"card-content\">\n\t\tApache Camel, <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">(Apache&nbsp;License&nbsp;2.0)</a>\n\t</div>\n</div>\n<p><a href=\"https://en.wikipedia.org/wiki/Apache_Camel\">Apache Camel</a> is a java-based Open Source framework, that can transform and route data. It supports most of the <a href=\"https://en.wikipedia.org/wiki/Enterprise_Integration_Patterns\">Enterprise Integration Patterns</a> and hundreds(!) of <a href=\"http://camel.apache.org/components.html\">connectors / components</a>. Think of it as an extensive transformation and workflow automation engine. In fact, it's so powerful and versatile, that it unfortunately doesn't come with a visual user interface or a plug-and-play installer. Luckily, for everyone who doesn't happen to be a java expert, there's also an xml configuration (via <a href=\"https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/xsd-configuration.html\">spring xml</a>). And that's mostly all we need!</p>\n<h2>Transforming the Communication Protocol</h2>\n<p>We will use Spring XML to configure Apache Camel. The workflow in Camel are called <code>&lt;routes&gt;</code>. So let's create a route that transforms our mqtt to REST protocol:</p>\n<pre class=\"language-xml\"><code class=\"language-xml\"><span class=\"token prolog\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>beans</span> <span class=\"token attr-name\">xmlns</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://www.springframework.org/schema/beans<span class=\"token punctuation\">\"</span></span>\n\t<span class=\"token attr-name\"><span class=\"token namespace\">xmlns:</span>xsi</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://www.w3.org/2001/XMLSchema-instance<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\"><span class=\"token namespace\">xmlns:</span>camel</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://camel.apache.org/schema/spring<span class=\"token punctuation\">\"</span></span>\n\t<span class=\"token attr-name\"><span class=\"token namespace\">xmlns:</span>util</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://www.springframework.org/schema/util<span class=\"token punctuation\">\"</span></span>\n\t<span class=\"token attr-name\"><span class=\"token namespace\">xsi:</span>schemaLocation</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://www.springframework.org/schema/util\n\thttp://www.springframework.org/schema/util/spring-util.xsd \n\thttp://www.springframework.org/schema/beans\n    http://www.springframework.org/schema/beans/spring-beans.xsd\n    http://camel.apache.org/schema/spring\n    http://camel.apache.org/schema/spring/camel-spring.xsd<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>camelContext</span> <span class=\"token attr-name\">xmlns</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://camel.apache.org/schema/spring<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>route</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>from</span>\n\t\t\t\t<span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>mqtt://psi6000?host=tcp://192.168.123.135:1883<span class=\"token entity\" title=\"&amp;\">&amp;amp;</span>subscribeTopicName=PSI6000//PROCESS/PPMP/PROCESS<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>to</span>\n\t\t\t\t<span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>jetty:http://unide.eclipse.org:8080/rest/v2/measurement?bridgeEndpoint=true<span class=\"token entity\" title=\"&amp;\">&amp;amp;</span>throwExceptionOnFailure=true<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">/></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>route</span><span class=\"token punctuation\">></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>camelContext</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>beans</span><span class=\"token punctuation\">></span></span>\n</code></pre>\n<p>That's it! A <code>&lt;route&gt;</code> that reads<code>&lt;from&gt;</code> mqtt and forwards <code>&lt;to&gt;</code> http. Not so difficult, is it? We could use many of the other <a href=\"http://camel.apache.org/components.html\">connectors / components</a> in the example above as well to transform from/to different protocols.</p>\n<p>But wait! The welding payload above was not Production Performance Management Protocol. So we also need to normalize the payload.</p>\n<h2>Normalizing the Payload</h2>\n<p>Now that we can easily convert protocols, let's address the structure of the payload. Overall, we want to have a workflow that looks as described in the diagram below:</p>\n<div class=\"card figure\">\n\t<div class=\"card-image\">\n\t\t<figure class=\"image\">\n\t\t\t<img alt=\"data workflow\" title=\"data workflow\" src=\"/unide/images/blog/Transform-PPMP-with-camel-1.svg\"></img>\n\t\t</figure>\n\t</div>\n\t<div class=\"card-content\">\n\t\tWorkflow to extract the data from controller, convert it and send the data to the cloud application\n\t</div>\n</div>\n<p>The extra steps here are:</p>\n<ol>\n<li>transform the PSI 6000 JSON String payload to a java object</li>\n<li>transform the PSI 6000 java object to two Production Performance Management Protocol-java objects (<a href=\"/unide/specification/measurement-message\">measurement-message</a> and <a href=\"https://www.eclipse.org/unide/specification/process-message\">process-message</a>)</li>\n<li>split up the two Production Performance Management Protocol objects</li>\n<li>route the objects individually</li>\n<li>transform each Production Performance Management Protocol object back to a String</li>\n</ol>\n<h3>Create the PSI 6000 Java Object</h3>\n<p>Luckily, there are helpers for transforming json (or xml) to plain old java objects (POJOs). We are using <a href=\"http://www.jsonschema2pojo.org/\">jsonschema2pojo</a> to convert the above json sample to POJOs with Jackson 2.x annotation. I name the resulting data type class <code>PSI6000DataType</code> and organize it in the package <code>org.eclipse.iot.unide.integrators</code>. Based on the given testdata, jsonschema2pojo cannot fully deduct all attribute types correctly. In order to allow floating point values, we would rename all <code>Integer</code> and <code>Object</code> types to <code>Number</code> in the WeldLog.java file. Also in the same file, we would change the type of the <code>dateTime</code> field from String to <code>LocalDateTime</code> to be more accurate:</p>\n<pre class=\"language-java\"><code class=\"language-java\"><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span>\n<span class=\"token annotation punctuation\">@JsonProperty</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"dateTime\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token annotation punctuation\">@JsonSerialize</span><span class=\"token punctuation\">(</span>using <span class=\"token operator\">=</span> LocalDateTimeSerializer<span class=\"token punctuation\">.</span><span class=\"token keyword\">class</span><span class=\"token punctuation\">)</span>\n<span class=\"token annotation punctuation\">@JsonDeserialize</span><span class=\"token punctuation\">(</span>using <span class=\"token operator\">=</span> LocalDateTimeDeserializer<span class=\"token punctuation\">.</span><span class=\"token keyword\">class</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">private</span> LocalDateTime dateTime<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span>\n</code></pre>\n<p>For that, we also need to include the respective imports:</p>\n<pre class=\"language-java\"><code class=\"language-java\"><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span>\n<span class=\"token keyword\">import</span> com<span class=\"token punctuation\">.</span>fasterxml<span class=\"token punctuation\">.</span>jackson<span class=\"token punctuation\">.</span>databind<span class=\"token punctuation\">.</span>annotation<span class=\"token punctuation\">.</span>JsonDeserialize<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> com<span class=\"token punctuation\">.</span>fasterxml<span class=\"token punctuation\">.</span>jackson<span class=\"token punctuation\">.</span>databind<span class=\"token punctuation\">.</span>annotation<span class=\"token punctuation\">.</span>JsonSerialize<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> com<span class=\"token punctuation\">.</span>fasterxml<span class=\"token punctuation\">.</span>jackson<span class=\"token punctuation\">.</span>datatype<span class=\"token punctuation\">.</span>jsr310<span class=\"token punctuation\">.</span>deser<span class=\"token punctuation\">.</span>LocalDateTimeDeserializer<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> com<span class=\"token punctuation\">.</span>fasterxml<span class=\"token punctuation\">.</span>jackson<span class=\"token punctuation\">.</span>datatype<span class=\"token punctuation\">.</span>jsr310<span class=\"token punctuation\">.</span>ser<span class=\"token punctuation\">.</span>LocalDateTimeSerializer<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span>\n</code></pre>\n<p>and adjust the getter (<code>getDateTime()</code>), setter (<code>setDateTime()</code>) and the type in the constructor (<code>public WeldLog(...)</code>) accordingly.</p>\n<p>Camel will be able to transform (&quot;<em>unmarshal</em>&quot;) this datatype from a string to a POJO after adding the definition to the above Spring XML:</p>\n<pre class=\"language-xml\"><code class=\"language-xml\">...\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>camelContext</span> <span class=\"token attr-name\">xmlns</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://camel.apache.org/schema/spring<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>dataFormats</span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>json</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>psi6000<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">library</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Jackson<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\">unmarshalTypeName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>org.eclipse.iot.unide.integrators.PSI6000DataType<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>dataFormats</span><span class=\"token punctuation\">></span></span>\n\t...\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>camelContext</span><span class=\"token punctuation\">></span></span>\n</code></pre>\n<h3>Use unide.java binding for Production Performance Management Protocol Java Objects</h3>\n<p>For eventually transforming the Production Performance Management Protocol objects back to String (&quot;<em>marshal</em>&quot;), we can make use of the <a href=\"https://github.com/eclipse/unide.java\">unide Production Performance Management Protocol java binding</a>. Just adjust the dataFormats section of the Spring XML so that it reads:</p>\n<pre class=\"language-xml\"><code class=\"language-xml\">...\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>camelContext</span> <span class=\"token attr-name\">xmlns</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://camel.apache.org/schema/spring<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>dataFormats</span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>json</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>psi6000<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">library</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Jackson<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\">unmarshalTypeName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>org.eclipse.iot.unide.integrators.PSI6000DataType<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>json</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>ppmpMeasurementMessage<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">library</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Jackson<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\">unmarshalTypeName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>org.eclipse.iot.unide.ppmp.measurements.MeasurementsWrapper<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\">moduleClassNames</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>com.fasterxml.jackson.datatype.jsr310.JavaTimeModule<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\">disableFeatures</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>WRITE_DATES_AS_TIMESTAMPS<span class=\"token punctuation\">\"</span></span> \n\t\t\t<span class=\"token attr-name\">include</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>NON_NULL<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">/></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>json</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>ppmpProcessMessage<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">library</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Jackson<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\">unmarshalTypeName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>org.eclipse.iot.unide.ppmp.process.ProcessWrapper<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\">moduleClassNames</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>com.fasterxml.jackson.datatype.jsr310.JavaTimeModule<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\">disableFeatures</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>WRITE_DATES_AS_TIMESTAMPS<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\">include</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>NON_NULL<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>dataFormats</span><span class=\"token punctuation\">></span></span>\n\t...\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>camelContext</span><span class=\"token punctuation\">></span></span>\n</code></pre>\n<h3>Create the Workflow</h3>\n<p>In order to better structure data flow, we use multiple <code>&lt;route&gt;</code>-s: one for retrieving the data and two more after the split of the payload. They are connected via the virtual camel protocol &quot;<em>direct</em>&quot;. In the following Spring XML, you can also find some <code>&lt;log&gt;</code> points and additional steps to set http header (<code>&lt;setHeader&gt;</code>) for posting to the unide server:</p>\n<pre class=\"language-xml\"><code class=\"language-xml\"><span class=\"token prolog\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>beans</span> <span class=\"token attr-name\">xmlns</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://www.springframework.org/schema/beans<span class=\"token punctuation\">\"</span></span>\n\t<span class=\"token attr-name\"><span class=\"token namespace\">xmlns:</span>xsi</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://www.w3.org/2001/XMLSchema-instance<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\"><span class=\"token namespace\">xmlns:</span>camel</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://camel.apache.org/schema/spring<span class=\"token punctuation\">\"</span></span>\n\t<span class=\"token attr-name\"><span class=\"token namespace\">xmlns:</span>util</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://www.springframework.org/schema/util<span class=\"token punctuation\">\"</span></span>\n\t<span class=\"token attr-name\"><span class=\"token namespace\">xsi:</span>schemaLocation</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://www.springframework.org/schema/util\n\thttp://www.springframework.org/schema/util/spring-util.xsd \n\thttp://www.springframework.org/schema/beans\n    http://www.springframework.org/schema/beans/spring-beans.xsd\n    http://camel.apache.org/schema/spring\n    http://camel.apache.org/schema/spring/camel-spring.xsd<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>bean</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>psi6000-to-ppmp<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>org.eclipse.iot.unide.integrators.PSI6000<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>bean</span><span class=\"token punctuation\">></span></span>\n\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>camelContext</span> <span class=\"token attr-name\">xmlns</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>http://camel.apache.org/schema/spring<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>dataFormats</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>json</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>psi6000<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">library</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Jackson<span class=\"token punctuation\">\"</span></span>\n\t\t\t\t<span class=\"token attr-name\">unmarshalTypeName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>org.eclipse.iot.unide.integrators.PSI6000DataType<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>json</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>ppmpMeasurementMessage<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">library</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Jackson<span class=\"token punctuation\">\"</span></span>\n\t\t\t\t<span class=\"token attr-name\">unmarshalTypeName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>org.eclipse.iot.unide.ppmp.measurements.MeasurementsWrapper<span class=\"token punctuation\">\"</span></span>\n\t\t\t\t<span class=\"token attr-name\">moduleClassNames</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>com.fasterxml.jackson.datatype.jsr310.JavaTimeModule<span class=\"token punctuation\">\"</span></span>\n\t\t\t\t<span class=\"token attr-name\">disableFeatures</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>WRITE_DATES_AS_TIMESTAMPS<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">include</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>NON_NULL<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>json</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>ppmpProcessMessage<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">library</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Jackson<span class=\"token punctuation\">\"</span></span>\n\t\t\t\t<span class=\"token attr-name\">unmarshalTypeName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>org.eclipse.iot.unide.ppmp.process.ProcessWrapper<span class=\"token punctuation\">\"</span></span>\n\t\t\t\t<span class=\"token attr-name\">moduleClassNames</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>com.fasterxml.jackson.datatype.jsr310.JavaTimeModule<span class=\"token punctuation\">\"</span></span>\n\t\t\t\t<span class=\"token attr-name\">disableFeatures</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>WRITE_DATES_AS_TIMESTAMPS<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">include</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>NON_NULL<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>dataFormats</span><span class=\"token punctuation\">></span></span>\n\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>route</span> <span class=\"token attr-name\">autoStartup</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>true<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>from</span>\n\t\t\t\t<span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>mqtt://psi6000?host=tcp://192.168.123.135:1883<span class=\"token entity\" title=\"&amp;\">&amp;amp;</span>subscribeTopicName=PSI6000//PROCESS/PPMP/PROCESS<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>unmarshal</span> <span class=\"token attr-name\">ref</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>psi6000<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>bean</span> <span class=\"token attr-name\">ref</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>psi6000-to-ppmp<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>setHeader</span> <span class=\"token attr-name\">headerName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Content-Type<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>constant</span><span class=\"token punctuation\">></span></span>application/json; charset=utf-8<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>constant</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>setHeader</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>setHeader</span> <span class=\"token attr-name\">headerName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>CamelHttpMethod<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>constant</span><span class=\"token punctuation\">></span></span>POST<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>constant</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>setHeader</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>multicast</span><span class=\"token punctuation\">></span></span>\n\t\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>to</span> <span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>direct:measurement<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>to</span> <span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>direct:process<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>multicast</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>log</span> <span class=\"token attr-name\">message</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>done<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>setBody</span><span class=\"token punctuation\">></span></span>\n\t\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>simple</span><span class=\"token punctuation\">></span></span>{\"result\": true }<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>simple</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>setBody</span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>route</span><span class=\"token punctuation\">></span></span>\n\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>route</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>from</span> <span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>direct:measurement<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>setBody</span><span class=\"token punctuation\">></span></span>\n\t\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>simple</span><span class=\"token punctuation\">></span></span>${body[0]}<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>simple</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>setBody</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>log</span> <span class=\"token attr-name\">message</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>deviceId measurement: ${body.device.deviceID}<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>marshal</span> <span class=\"token attr-name\">ref</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>ppmpMeasurementMessage<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>log</span> <span class=\"token attr-name\">message</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>sending measurement<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>setHeader</span> <span class=\"token attr-name\">headerName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Content-Length<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>simple</span><span class=\"token punctuation\">></span></span>body.length<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>simple</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>setHeader</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>to</span>\n\t\t\t\t<span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>jetty:http://unide.eclipse.org:8080/rest/v2/measurement?bridgeEndpoint=true<span class=\"token entity\" title=\"&amp;\">&amp;amp;</span>throwExceptionOnFailure=true<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>log</span> <span class=\"token attr-name\">message</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>measurement sent<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>route</span><span class=\"token punctuation\">></span></span>\n\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>route</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>from</span> <span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>direct:process<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>setBody</span><span class=\"token punctuation\">></span></span>\n\t\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>simple</span><span class=\"token punctuation\">></span></span>${body[1]}<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>simple</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>setBody</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>log</span> <span class=\"token attr-name\">message</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>deviceId process: ${body.device.deviceID}<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>marshal</span> <span class=\"token attr-name\">ref</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>ppmpProcessMessage<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>log</span> <span class=\"token attr-name\">message</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>sending process<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>setHeader</span> <span class=\"token attr-name\">headerName</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Content-Length<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>simple</span><span class=\"token punctuation\">></span></span>body.length<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>simple</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>setHeader</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>to</span>\n\t\t\t\t<span class=\"token attr-name\">uri</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>jetty:http://unide.eclipse.org:8080/rest/v2/process?bridgeEndpoint=true<span class=\"token entity\" title=\"&amp;\">&amp;amp;</span>throwExceptionOnFailure=true<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>log</span> <span class=\"token attr-name\">message</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>process sent<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>route</span><span class=\"token punctuation\">></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>camelContext</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>beans</span><span class=\"token punctuation\">></span></span>\n</code></pre>\n<p>You might have noticed that we have not yet discussed one important item in this workflow: how do we actually transform the payload from one format to another?</p>\n<h3>Transforming from PSI 6000 POJO to Production Performance Management Protocol POJOs</h3>\n<p>One thing that we'll hardwire as java code is the transformation from the source to the target structure. The same functionality could be achieved with scripting components (e.g. <a href=\"http://camel.apache.org/groovy.html\">groovy</a>, but that would be less powerful and worse performance. Since we don't expect the format to change but mostly the workflow or endpoints, implementing a java bean is not too much effort. Here's how:<br>\nApache Camel offers a <code>Processor</code> interface that can be used to override the <code>process()</code> function. This function receives the complete message (<code>exchange</code>) and can modify it in any way. Since we have created the PSI 6000 Java Object already and want to produce Production Performance Management Protocol java objects, the logic is mostly about creating the child objects and wiring the suitable getter to corresponding setter.</p>\n<pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">package</span> org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>integrators<span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">import</span> java<span class=\"token punctuation\">.</span>time<span class=\"token punctuation\">.</span>OffsetDateTime<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> java<span class=\"token punctuation\">.</span>time<span class=\"token punctuation\">.</span>ZoneOffset<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> java<span class=\"token punctuation\">.</span>util<span class=\"token punctuation\">.</span>Arrays<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> java<span class=\"token punctuation\">.</span>util<span class=\"token punctuation\">.</span>LinkedList<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> java<span class=\"token punctuation\">.</span>util<span class=\"token punctuation\">.</span>List<span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">import</span> org<span class=\"token punctuation\">.</span>apache<span class=\"token punctuation\">.</span>camel<span class=\"token punctuation\">.</span>Exchange<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> org<span class=\"token punctuation\">.</span>apache<span class=\"token punctuation\">.</span>camel<span class=\"token punctuation\">.</span>Message<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> org<span class=\"token punctuation\">.</span>apache<span class=\"token punctuation\">.</span>camel<span class=\"token punctuation\">.</span>Processor<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>commons<span class=\"token punctuation\">.</span>Device<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>commons<span class=\"token punctuation\">.</span>MetaData<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>MeasurementsWrapper<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>Process<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>ProcessWrapper<span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">import</span> com<span class=\"token punctuation\">.</span>fasterxml<span class=\"token punctuation\">.</span>jackson<span class=\"token punctuation\">.</span>core<span class=\"token punctuation\">.</span>JsonProcessingException<span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">PSI6000</span> <span class=\"token keyword\">implements</span> <span class=\"token class-name\">Processor</span> <span class=\"token punctuation\">{</span>\n\n\t<span class=\"token keyword\">public</span> <span class=\"token function\">PSI6000</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n\n\t<span class=\"token keyword\">private</span> org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>SeriesMap <span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>\n\t\t\torg<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>SeriesMap map<span class=\"token punctuation\">,</span> String name<span class=\"token punctuation\">,</span> Number value<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>value <span class=\"token operator\">!=</span> null<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\tmap<span class=\"token punctuation\">.</span><span class=\"token function\">setSeriesValue</span><span class=\"token punctuation\">(</span>name<span class=\"token punctuation\">,</span> Arrays<span class=\"token punctuation\">.</span><span class=\"token function\">asList</span><span class=\"token punctuation\">(</span>value<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n\t\t<span class=\"token keyword\">return</span> map<span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n\n\t<span class=\"token annotation punctuation\">@Override</span>\n\t<span class=\"token keyword\">public</span> <span class=\"token keyword\">void</span> <span class=\"token function\">process</span><span class=\"token punctuation\">(</span>Exchange exchange<span class=\"token punctuation\">)</span> <span class=\"token keyword\">throws</span> JsonProcessingException<span class=\"token punctuation\">,</span> Exception <span class=\"token punctuation\">{</span>\n\t\tMessage msg <span class=\"token operator\">=</span> exchange<span class=\"token punctuation\">.</span><span class=\"token function\">getIn</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tPSI6000DataType doc <span class=\"token operator\">=</span> msg<span class=\"token punctuation\">.</span><span class=\"token function\">getBody</span><span class=\"token punctuation\">(</span>PSI6000DataType<span class=\"token punctuation\">.</span><span class=\"token keyword\">class</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\tObject <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>bundle <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Object</span><span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\t\tbundle<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span>       <span class=\"token operator\">=</span> <span class=\"token function\">transformMeasurement</span><span class=\"token punctuation\">(</span>doc<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tbundle<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>       <span class=\"token operator\">=</span> <span class=\"token function\">transformProcess</span><span class=\"token punctuation\">(</span>doc<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tmsg<span class=\"token punctuation\">.</span><span class=\"token function\">setBody</span><span class=\"token punctuation\">(</span>bundle<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\texchange<span class=\"token punctuation\">.</span><span class=\"token function\">setOut</span><span class=\"token punctuation\">(</span>msg<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n\n\t<span class=\"token keyword\">private</span> <span class=\"token keyword\">void</span> <span class=\"token function\">setSpotName</span><span class=\"token punctuation\">(</span>Device device<span class=\"token punctuation\">,</span> WeldLog wl<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\tString spotName <span class=\"token operator\">=</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSpotName</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>spotName <span class=\"token operator\">!=</span> null <span class=\"token operator\">&amp;&amp;</span> spotName<span class=\"token punctuation\">.</span><span class=\"token function\">length</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">></span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\tMetaData md <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">MetaData</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\tmd<span class=\"token punctuation\">.</span><span class=\"token function\">setMetaDataValue</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"spotName\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSpotName</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\tdevice<span class=\"token punctuation\">.</span><span class=\"token function\">setMetaData</span><span class=\"token punctuation\">(</span>md<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n\t<span class=\"token punctuation\">}</span>\n\n\t<span class=\"token keyword\">private</span> ProcessWrapper <span class=\"token function\">transformProcess</span><span class=\"token punctuation\">(</span>PSI6000DataType doc<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\tProcessWrapper wrapper <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">ProcessWrapper</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tWeldLog wl <span class=\"token operator\">=</span> doc<span class=\"token punctuation\">.</span><span class=\"token function\">getMessage</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">getWeldLog</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tOffsetDateTime odt <span class=\"token operator\">=</span> OffsetDateTime<span class=\"token punctuation\">.</span><span class=\"token function\">of</span><span class=\"token punctuation\">(</span>wl<span class=\"token punctuation\">.</span><span class=\"token function\">getDateTime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> ZoneOffset<span class=\"token punctuation\">.</span>UTC<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token comment\">// device</span>\n\t\tDevice device <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Device</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tdevice<span class=\"token punctuation\">.</span><span class=\"token function\">setDeviceID</span><span class=\"token punctuation\">(</span>doc<span class=\"token punctuation\">.</span><span class=\"token function\">getMessage</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">getWeldLog</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">getTimerName</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">setSpotName</span><span class=\"token punctuation\">(</span>device<span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\twrapper<span class=\"token punctuation\">.</span><span class=\"token function\">setDevice</span><span class=\"token punctuation\">(</span>device<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token comment\">// part</span>\n\t\tString partId <span class=\"token operator\">=</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPartIdentString</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>partId <span class=\"token operator\">!=</span> null <span class=\"token operator\">&amp;&amp;</span> partId<span class=\"token punctuation\">.</span><span class=\"token function\">length</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">></span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\torg<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>Part part <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>Part</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\tpart<span class=\"token punctuation\">.</span><span class=\"token function\">setPartID</span><span class=\"token punctuation\">(</span>partId<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\twrapper<span class=\"token punctuation\">.</span><span class=\"token function\">setPart</span><span class=\"token punctuation\">(</span>part<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n\n\t\t<span class=\"token comment\">// process</span>\n\t\tProcess process <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Process</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tprocess<span class=\"token punctuation\">.</span><span class=\"token function\">setTimestamp</span><span class=\"token punctuation\">(</span>odt<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tprocess<span class=\"token punctuation\">.</span><span class=\"token function\">setExternalProcessId</span><span class=\"token punctuation\">(</span>String<span class=\"token punctuation\">.</span><span class=\"token function\">valueOf</span><span class=\"token punctuation\">(</span>wl<span class=\"token punctuation\">.</span><span class=\"token function\">getProtRecordID</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\twrapper<span class=\"token punctuation\">.</span><span class=\"token function\">setProcess</span><span class=\"token punctuation\">(</span>process<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token comment\">// measurements</span>\n\t\tList<span class=\"token operator\">&lt;</span>org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>Measurements<span class=\"token operator\">></span> measurements <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">LinkedList</span><span class=\"token operator\">&lt;</span>org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>Measurements<span class=\"token operator\">></span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\torg<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>Measurements measurement <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>Measurements</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\n\t\tmeasurement<span class=\"token punctuation\">.</span><span class=\"token function\">setTimestamp</span><span class=\"token punctuation\">(</span>odt<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token comment\">//values</span>\n\t\torg<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>SeriesMap seriesMap <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>process<span class=\"token punctuation\">.</span>SeriesMap</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tseriesMap<span class=\"token punctuation\">.</span><span class=\"token function\">setSeriesValue</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"curentCurve\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getCurrentCurve</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tseriesMap<span class=\"token punctuation\">.</span><span class=\"token function\">setSeriesValue</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"voltageCurve\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getVoltageCurve</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tseriesMap<span class=\"token punctuation\">.</span><span class=\"token function\">setSeriesValue</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"forceCurve\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getForceCurve</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\n\t\tmeasurement<span class=\"token punctuation\">.</span><span class=\"token function\">setSeriesMap</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tmeasurements<span class=\"token punctuation\">.</span><span class=\"token function\">add</span><span class=\"token punctuation\">(</span>measurement<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\twrapper<span class=\"token punctuation\">.</span><span class=\"token function\">setMeasurements</span><span class=\"token punctuation\">(</span>measurements<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\n\t\t<span class=\"token keyword\">return</span> wrapper<span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n\n\t<span class=\"token keyword\">private</span> MeasurementsWrapper <span class=\"token function\">transformMeasurement</span><span class=\"token punctuation\">(</span>PSI6000DataType doc<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\tMeasurementsWrapper wrapper <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">MeasurementsWrapper</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tWeldLog wl <span class=\"token operator\">=</span> doc<span class=\"token punctuation\">.</span><span class=\"token function\">getMessage</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">getWeldLog</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token comment\">// device</span>\n\t\tDevice device <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Device</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tdevice<span class=\"token punctuation\">.</span><span class=\"token function\">setDeviceID</span><span class=\"token punctuation\">(</span>doc<span class=\"token punctuation\">.</span><span class=\"token function\">getMessage</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">getWeldLog</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">getTimerName</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">setSpotName</span><span class=\"token punctuation\">(</span>device<span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\twrapper<span class=\"token punctuation\">.</span><span class=\"token function\">setDevice</span><span class=\"token punctuation\">(</span>device<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token comment\">// part</span>\n\t\tString partId <span class=\"token operator\">=</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPartIdentString</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>partId <span class=\"token operator\">!=</span> null <span class=\"token operator\">&amp;&amp;</span> partId<span class=\"token punctuation\">.</span><span class=\"token function\">length</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">></span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\torg<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>Part part <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>Part</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\tpart<span class=\"token punctuation\">.</span><span class=\"token function\">setPartID</span><span class=\"token punctuation\">(</span>partId<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\twrapper<span class=\"token punctuation\">.</span><span class=\"token function\">setPart</span><span class=\"token punctuation\">(</span>part<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n\n\t\t<span class=\"token comment\">// measurements</span>\n\t\tList<span class=\"token operator\">&lt;</span>org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>Measurements<span class=\"token operator\">></span> measurements <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">LinkedList</span><span class=\"token operator\">&lt;</span>org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>Measurements<span class=\"token operator\">></span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\torg<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>Measurements measurement <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>Measurements</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\tmeasurement<span class=\"token punctuation\">.</span><span class=\"token function\">setTimestamp</span><span class=\"token punctuation\">(</span>OffsetDateTime<span class=\"token punctuation\">.</span><span class=\"token function\">of</span><span class=\"token punctuation\">(</span>wl<span class=\"token punctuation\">.</span><span class=\"token function\">getDateTime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> ZoneOffset<span class=\"token punctuation\">.</span>UTC<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token comment\">// values</span>\n\t\torg<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>SeriesMap seriesMap <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">org<span class=\"token punctuation\">.</span>eclipse<span class=\"token punctuation\">.</span>iot<span class=\"token punctuation\">.</span>unide<span class=\"token punctuation\">.</span>ppmp<span class=\"token punctuation\">.</span>measurements<span class=\"token punctuation\">.</span>SeriesMap</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tseriesMap<span class=\"token punctuation\">.</span><span class=\"token function\">setSeriesValue</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"$_time\"</span><span class=\"token punctuation\">,</span> Arrays<span class=\"token punctuation\">.</span><span class=\"token function\">asList</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"wear\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWear</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"wearPerCent\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWearPerCent</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"monitorState\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getMonitorState</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regulationState\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegulationState</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"measureState\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getMeasureState</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"powerState\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPowerState</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sequenceState\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSequenceState</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sequenceStateAdd\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSequenceStateAdd</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sequenceRepeat\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSequenceRepeat</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"monitorMode\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getMonitorMode</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"iDemandStd\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getIDemandStd</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"ilsts\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getIlsts</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regulationStd\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegulationStd</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"iDemand1\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getIDemand1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"iActual1\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getIActual1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regulation1\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegulation1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"iDemand2\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getIDemand2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"iActual2\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getIActual2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regulation2\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegulation2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"iDemand3\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getIDemand3</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"iActual3\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getIActual3</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regulation3\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegulation3</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"phaStd\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPhaStd</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"pha1\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPha1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"pha2\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPha2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"pha3\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPha3</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"t_iDemandStd\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getIDemandStd</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"tActualStd\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getTActualStd</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token comment\">// addMeasurementPoint(seriesMap, \"partIdentString\",</span>\n\t\t<span class=\"token comment\">// wl.getPartIdentString());</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"tipDressCounter\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getTipDressCounter</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"electrodeNo\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getElectrodeNo</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgForceSetPoint\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgForceSetPoint</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgSheetThicknessSetPoint\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgSheetThicknessSetPoint</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgSagGpSetPoint\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgSagGpSetPoint</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgSpotWithSg\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgSpotWithSg</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgMotorCurrent\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgMotorCurrent</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgMotorTemp\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgMotorTemp</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgForce\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgForce</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgSheetThickness\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgSheetThickness</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgSagGp\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgSagGp</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sgSagGc\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgSagGc</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regUsrUspJunction\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegUsrUspJunction</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regUsrUspMax\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegUsrUspMax</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regSpotDiaActual\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegSpotDiaActual</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regSpotDiaMinDemand\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegSpotDiaMinDemand</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regSplashTime\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegSplashTime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"nuggetDiameter\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getNuggetDiameter</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"usp\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUsp</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"normingTime\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getNormingTime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"regulationStartTime\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getRegulationStartTime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"returnToConstantCurrent\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getReturnToConstantCurrent</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"declineUsp\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getDeclineUsp</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"offsetUsp\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getOffsetUsp</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"currentFactor\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getCurrentFactor</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"triggerTime\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getTriggerTime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"xqrMeasuringActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getXqrMeasuringActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"xqrRegulationActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getXqrRegulationActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"xqrMonitoringActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getXqrMonitoringActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"xqrWeldTimeProlongationActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getXqrWeldTimeProlongationActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"voltageActualValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getVoltageActualValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"voltageRefValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getVoltageRefValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"currentActualValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getCurrentActualValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"currentReferenceValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getCurrentReferenceValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldTimeActualValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldTimeActualValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldTimeRefValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldTimeRefValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"energyActualValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getEnergyActualValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"energyRefValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getEnergyRefValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"powerActualValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPowerActualValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"powerRefValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPowerRefValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"resistanceActualValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getResistanceActualValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"resistanceRefValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getResistanceRefValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"pulseWidthActualValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPulseWidthActualValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"pulseWidthRefValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getPulseWidthRefValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"stabilisationFactorActValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getStabilisationFactorActValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"stabilisationFactorRefValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getStabilisationFactorRefValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"thresholdStabilisationFactor\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getThresholdStabilisationFactor</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"wldEffectStabilisationFactor\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWldEffectStabilisationFactor</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uipActualValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUipActualValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uipRefValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUipRefValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirExpulsionTime\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirExpulsionTime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirMeasuringActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirMeasuringActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirRegulationActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirRegulationActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirMonitoringActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirMonitoringActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirWeldTimeProlongationActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirWeldTimeProlongationActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirQStoppRefCntValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirQStoppRefCntValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirQStoppActCntValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirQStoppActCntValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirUipUpperTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirUipUpperTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirUipLowerTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirUipLowerTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirUipCondTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirUipCondTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirPsfLowerTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirPsfLowerTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uirPsfCondTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUirPsfCondTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_1\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP161</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_2\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP162</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_3\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP163</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_4\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP164</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_5\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP165</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP32_6\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP326</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_7\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP167</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_8\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP168</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_9\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP169</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_10\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP1610</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_11\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP1611</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP32_12\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP3212</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_13\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP1613</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_14\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP1614</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_15\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP1615</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_16\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP1616</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP16_17\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP1617</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"weldSpotCustDataP32_18\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getWeldSpotCustDataP3218</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"uipMonCondUpperTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getUipMonCondUpperTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"fqfActualValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getFqfActualValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"fqfRefValue\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getFqfRefValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"fqfMonUpperTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getFqfMonUpperTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"fqfMonLowerTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getFqfMonLowerTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"fqfMonCondUpperTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getFqfMonCondUpperTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"fqfMonCondLowerTol\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getFqfMonCondLowerTol</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"fqfMeasuringActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getFqfMeasuringActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"xqrModeOff\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getXqrModeOff</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"reweldActive\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getReweldActive</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token comment\">// addMeasurementPoint(seriesMap, \"weldspotRefIdent\",</span>\n\t\t<span class=\"token comment\">// wl.getWeldspotRefIdent());</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sg_Torque_Gp\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgTorqueGp</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sg_Force_Corr\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgForceCorr</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sg_Weldspot_Geo_Wear\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgWeldspotGeoWear</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sg_Wear_Length\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgWearLength</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token function\">addMeasurementPoint</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">,</span> <span class=\"token string\">\"sg_Beam_UpArching\"</span><span class=\"token punctuation\">,</span> wl<span class=\"token punctuation\">.</span><span class=\"token function\">getSgBeamUpArching</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\tmeasurement<span class=\"token punctuation\">.</span><span class=\"token function\">setSeriesMap</span><span class=\"token punctuation\">(</span>seriesMap<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\tmeasurements<span class=\"token punctuation\">.</span><span class=\"token function\">add</span><span class=\"token punctuation\">(</span>measurement<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\twrapper<span class=\"token punctuation\">.</span><span class=\"token function\">setMeasurements</span><span class=\"token punctuation\">(</span>measurements<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token keyword\">return</span> wrapper<span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n</code></pre>\n<h1>Summary</h1>\n<p>It takes a while to understand the involved software components. Yet, once the set up is running, it gets much easier to adapt it to another Use Case. And another. The pattern of wiring protocols and transforming the payload is very similar. The involved frameworks are powerful enough to support many Use Cases. This article is supposed to show that there are simple possibilities to transform transport protocols and payloads, so that you can focus on addressing functional challenges.</p>\n","url":"/blog/2018/2/11/Transform-PPMP-with-camel","title":"Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel","date":"2018-02-11T00:00:00.000Z","tags":["use cases"],"prev":{"url":"/blog/2018/1/26/New-website","title":"Updated Website"},"next":{"url":"/blog/2018/2/13/grinding-machine-scenario","title":"Use Cases: Unide and the Eclipse Testbed"}}
\ No newline at end of file
diff --git a/files/posts/Unide-at-BCX.json b/files/posts/Unide-at-BCX.json
index 8910b9d..c5e1cae 100644
--- a/files/posts/Unide-at-BCX.json
+++ b/files/posts/Unide-at-BCX.json
@@ -1 +1 @@
-{"name":"Unide-at-BCX","content":"<p>Unide and PPMP were used in <a href=\"http://bcw.bosch-si.com/berlin/bcw-hackathon/?refresh=1\">Bosch Connected Experience Hackaton</a> by students and developers to connect sensors to backend solutions in just two days!<br>\nThey even took a professional video:</p>\n<center>\n<iframe width=\"400\" height=\"300\" src=\"https://www.youtube.com/embed/Pq88mIx-lnQ?ecver=1\" frameborder=\"0\" allowfullscreen></iframe>\n</center>\n<p>Also in the same conference, Bosch CEO Dr. Volkmar Denner <a href=\"http://bcw.bosch-si.com/berlin/bcw-hackathon/?refresh=1\">refered to PPMP again</a>:</p>\n<blockquote>\n\t<p>On a more practical level, the product performance management protocol, or PPMP, is being tried out at the Bosch plant in Homburg, Germany, as part of a joint Industrie 4.0 and IIC testbed. Bosch itself developed the PPMP, which is available to all at no cost. It allows small and medium-sized enterprises to transmit data from their sensors quickly, simply, and securely to the production systems of large companies. This helps remove some of the obstacles preventing entry into connected manufacturing. This first practical experience will be used to further refine the new protocol – work which will be done by Eclipse, an open-source community. Once again, we see that openness is our life blood.</p>\n\t<footer>Dr. Volkmar Denner, Bosch CEO</footer>\n</blockquote>\n","url":"/blog/2017/3/23/Unide-at-BCX","title":"Unide at Bosch Hackaton","date":"2017-03-23T17:00:00.000Z","tags":["media"],"prev":{"url":"/blog/2016/9/27/News-coverage","title":"News Coverage"},"next":{"url":"/blog/2017/6/1/New-process-message-spec","title":"New PPMP-Specification for processes"}}
\ No newline at end of file
+{"name":"Unide-at-BCX","content":"<p>Unide and the Production Performance Management Protocol were used in <a href=\"http://bcw.bosch-si.com/berlin/bcw-hackathon/?refresh=1\">Bosch Connected Experience Hackaton</a> by students and developers to connect sensors to backend solutions in just two days!<br>\nThey even took a professional video:</p>\n<center>\n<iframe width=\"400\" height=\"300\" src=\"https://www.youtube.com/embed/Pq88mIx-lnQ?ecver=1\" frameborder=\"0\" allowfullscreen></iframe>\n</center>\n<p>Also in the same conference, Bosch CEO Dr. Volkmar Denner <a href=\"http://bcw.bosch-si.com/berlin/bcw-hackathon/?refresh=1\">refered to the Production Performance Management Protocol again</a>:</p>\n<blockquote>\n\t<p>On a more practical level, the Product Performance Management Protocol, or PPMP, is being tried out at the Bosch plant in Homburg, Germany, as part of a joint Industrie 4.0 and IIC testbed. Bosch itself developed the Production Performance Management Protocol, which is available to all at no cost. It allows small and medium-sized enterprises to transmit data from their sensors quickly, simply, and securely to the production systems of large companies. This helps remove some of the obstacles preventing entry into connected manufacturing. This first practical experience will be used to further refine the new protocol – work which will be done by Eclipse, an open-source community. Once again, we see that openness is our life blood.</p>\n\t<footer>Dr. Volkmar Denner, Bosch CEO</footer>\n</blockquote>\n","url":"/blog/2017/3/23/Unide-at-BCX","title":"Unide at Bosch Hackaton","date":"2017-03-23T17:00:00.000Z","tags":["media"],"prev":{"url":"/blog/2016/9/27/News-coverage","title":"News Coverage"},"next":{"url":"/blog/2017/6/1/New-process-message-spec","title":"New Production Performance Management Protocol-Specification for processes"}}
\ No newline at end of file
diff --git a/files/posts/Validator-Online.json b/files/posts/Validator-Online.json
index 4cdbad9..4359736 100644
--- a/files/posts/Validator-Online.json
+++ b/files/posts/Validator-Online.json
@@ -1 +1 @@
-{"name":"Validator-Online","content":"<p>Our first PPMP-Validator as a HTTP-server is online!</p>\n<p>What we already contribtuted as sourcecode to the Unide-project we've also installed on an eclipse sandbox server. Now you are able to validate your PPMP-messages through the internet without running the server on your local machine. The intention is to make the latest specification validator accessible to everyone at anytime.</p>\n<p>You can reach the server by sending POST-requests to the following endpoints:</p>\n<pre>\n<a>http://unide.eclipse.org/rest/v2/message?validate=true</a>\n<a>http://unide.eclipse.org/rest/v2/measurement?validate=true</a>\n<a>http://unide.eclipse.org/rest/v2/process?validate=true</a>\n</pre>\n<p>Further functions of the sandbox server will be also visualization and storaging of incoming PPMP-messages.</p>\n","url":"/blog/2017/6/29/Validator-Online","title":"First PPMP-Validator Online","date":"2017-06-29T00:00:00.000Z","tags":["validator"],"prev":{"url":"/blog/2017/6/1/New-process-message-spec","title":"New PPMP-Specification for processes"},"next":{"url":"/blog/2017/10/6/DZone-article-published","title":"DZone article published"}}
\ No newline at end of file
+{"name":"Validator-Online","content":"<p>Our first Production Performance Management Protocol-Validator as a HTTP-server is online!</p>\n<p>What we already contribtuted as sourcecode to the Unide-project we've also installed on an eclipse sandbox server. Now you are able to validate your Production Performance Management Protocol-messages through the internet without running the server on your local machine. The intention is to make the latest specification validator accessible to everyone at anytime.</p>\n<p>You can reach the server by sending POST-requests to the following endpoints:</p>\n<pre>\n<a>http://unide.eclipse.org/rest/v2/message?validate=true</a>\n<a>http://unide.eclipse.org/rest/v2/measurement?validate=true</a>\n<a>http://unide.eclipse.org/rest/v2/process?validate=true</a>\n</pre>\n<p>Further functions of the sandbox server will be also visualization and storaging of incoming Production Performance Management Protocol-messages.</p>\n","url":"/blog/2017/6/29/Validator-Online","title":"First Production Performance Management Protocol-Validator Online","date":"2017-06-29T00:00:00.000Z","tags":["validator"],"prev":{"url":"/blog/2017/6/1/New-process-message-spec","title":"New Production Performance Management Protocol-Specification for processes"},"next":{"url":"/blog/2017/10/6/DZone-article-published","title":"DZone article published"}}
\ No newline at end of file
diff --git a/files/posts/Version-3-final.json b/files/posts/Version-3-final.json
index a88f775..a74c86a 100644
--- a/files/posts/Version-3-final.json
+++ b/files/posts/Version-3-final.json
@@ -1 +1 @@
-{"name":"Version-3-final","content":"<p>Version 3 of PPMP (Production Performance Management Protocol) has been finalized!<br>\nThanks to CONTACT Software, Balluff GmbH, Bosch Plant Blaichach and Bosch Connected Industry for their proposals, ideas and patience.<br>\nThe major improvements in Version 3 include consistent structure and naming, context for measurements and better extensibility.</p>\n<h1>Easy validation</h1>\n<p>Did you know that you can easily validate your PPMP payload against the published online version of PPMP? For example, <a href=\"https://www.jsonschemavalidator.net/\">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the PPMP specification as a <code>$ref</code> in the schema. For example:</p>\n<pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"$ref\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://raw.githubusercontent.com/eclipse/unide/master/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json\"</span>\n<span class=\"token punctuation\">}</span>\n</code></pre>\n<h1>Changes</h1>\n<h2>General</h2>\n<ul>\n<li><code>content-spec</code> is now &quot;urn:spec://eclipse.org/unide/&lt; type &gt;-message#<strong>v3</strong>&quot;</li>\n<li><code>mode</code> and <code>state</code> are introduced in <code>device</code> and replace v2's <code>operationalMode</code>, which was found to not clearly differentiate the functional mode and technical state.</li>\n<li>A common <code>id</code> is used and replaces different spellings in <code>deviceID</code>, <code>partID</code>, <code>program.id</code>.</li>\n<li><code>additionalData</code> in the various sections is used for any kind of not-specified data, that should be honored by the receiving party as context information. Where v2's <code>metaData</code> had to be key/String pairs, <code>additionalData</code> can also be complex JSON objects.</li>\n<li>In addition to <code>additionalData</code>, it is possible to include completely undefined keys in most places, in order to introduce custom or future keys. With it, it's e.g. possible to define and test currently meaningless 'window' key as an extension to limits.</li>\n<li>A common definition.json schema is used for sections that are used in multiple telegrams. With the help of JSON schema 'anyOf', sections inherit and can extend from these base definitions.</li>\n</ul>\n<h2><code>messages</code></h2>\n<ul>\n<li>Messages can have a <code>state</code> to indicate if this alert newly appeared (<code>NEW</code>) or disappeared (<code>ENDED</code>). Together with a common <code>code</code>, it is now possible e.g. to correlate events like &quot;<em>pressure too high</em>&quot; and &quot;<em>pressure not too high anymore</em>&quot;.</li>\n<li>What was before <code>type</code> has now been renamed to <code>source</code> to indicate if the message comes from the <code>DEVICE</code> itself or from the general infrastructure <code>TECHNICAL_INFO</code>.</li>\n<li>The <code>type</code> in v3 indicates the debug level of the message (<code>INFO</code>, <code>WARNING</code>, <code>ERROR</code>, <code>UNKNOWN</code>) and complements <code>severity</code> for describing urgency and relevance of a message.</li>\n</ul>\n<h2><code>measurements</code></h2>\n<ul>\n<li>The optional <code>context</code> section contains information on how to interpret the measurements. This includes\n<ul>\n<li>The field <code>type</code> (Number, String or Boolean value) indicates which format the <values> of a series have.</li>\n<li>The <code>unit</code> key can be used to describe the unit of measurement. There are different understandings and standardizations for units ('C' stands for Coulomb, not Celsius), like <a href=\"https://en.wikipedia.org/wiki/International_System_of_Units\">International System of Units</a>, <a href=\"https://tools.ietf.org/html/draft-ietf-core-senml-14#section-12.1\">SenML</a>, <a href=\"https://www.iso.org/obp/ui/#iso:std:iso:80000:-1:ed-1:v1:en\">ISO 80000-1:2009</a>, etc.. The <code>unit</code> key here is a string without further restriction. If that is needed, it can be specified via an URI in <code>namespace</code>.</li>\n<li><code>namespace</code> may contain an URI to identify further detail on the values in this measurement section. This can be a description of units, lengths or naming conventions for measurement points, but also a reference to a semantic model.</li>\n<li>Each entry in <code>limits</code> can be constant or an array of values. If constant, it applies to all corresponding measurements in <code>series</code>. If an array of the same length than the corresponding <code>series</code> is provided, each entry limits the measurement at the respective position. 'null' can be used to skip a limit for an individual measurement.</li>\n</ul>\n</li>\n<li><code>series</code> can contain other than numeric measurements if <code>context.type</code> contains any of 'BASE64', 'BOOLEAN', 'NUMBER', 'STRING', 'REF' or 'OTHER', the corresponding measurement in series are represented in this type ('REF', 'OTHER' and 'BASE64' are Strings). This way for example, even small base64 encoded binary data, as send from iolink devices, can be included. 'REF' could be used in multipart messages to reference to other sections or even external content.</li>\n<li><code>time</code> field replaces the v2 <code>$_time</code> field, which is difficult to represent in some programming languages. Note that time is not an Integer anymore but a JSON number, to allow sub-millisecond values.</li>\n</ul>\n<h2><code>processes</code></h2>\n<ul>\n<li>No more <code>shutoffValues</code> and <code>shutoffPhase</code><br>\n<code>shutoffValues</code> can be expressed as <code>specialValues</code> with a meaningful name, <code>shutoffPhase</code> is the measurement with the latest timestamp <code>ts</code>.</li>\n<li>Same improvements in measurements</li>\n</ul>\n","url":"/blog/2019/11/26/Version-3-final","title":"PPMP Version 3 final","date":"2019-11-26T00:00:00.000Z","tags":["v3"],"prev":{"url":"/blog/2019/3/1/Version-3","title":"PPMP Version 3 release candidate"}}
\ No newline at end of file
+{"name":"Version-3-final","content":"<p>Version 3 of the Production Performance Management Protocol (Production Performance Management Protocol) has been finalized!<br>\nThanks to CONTACT Software, Balluff GmbH, Bosch Plant Blaichach and Bosch Connected Industry for their proposals, ideas and patience.<br>\nThe major improvements in Version 3 include consistent structure and naming, context for measurements and better extensibility.</p>\n<h1>Easy validation</h1>\n<p>Did you know that you can easily validate your payload against the published online version of Production Performance Management Protocol? For example, <a href=\"https://www.jsonschemavalidator.net/\">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the Production Performance Management Protocol specification as a <code>$ref</code> in the schema. For example:</p>\n<pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"$ref\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://raw.githubusercontent.com/eclipse/unide/master/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json\"</span>\n<span class=\"token punctuation\">}</span>\n</code></pre>\n<h1>Changes</h1>\n<h2>General</h2>\n<ul>\n<li><code>content-spec</code> is now &quot;urn:spec://eclipse.org/unide/&lt; type &gt;-message#<strong>v3</strong>&quot;</li>\n<li><code>mode</code> and <code>state</code> are introduced in <code>device</code> and replace v2's <code>operationalMode</code>, which was found to not clearly differentiate the functional mode and technical state.</li>\n<li>A common <code>id</code> is used and replaces different spellings in <code>deviceID</code>, <code>partID</code>, <code>program.id</code>.</li>\n<li><code>additionalData</code> in the various sections is used for any kind of not-specified data, that should be honored by the receiving party as context information. Where v2's <code>metaData</code> had to be key/String pairs, <code>additionalData</code> can also be complex JSON objects.</li>\n<li>In addition to <code>additionalData</code>, it is possible to include completely undefined keys in most places, in order to introduce custom or future keys. With it, it's e.g. possible to define and test currently meaningless 'window' key as an extension to limits.</li>\n<li>A common definition.json schema is used for sections that are used in multiple telegrams. With the help of JSON schema 'anyOf', sections inherit and can extend from these base definitions.</li>\n</ul>\n<h2><code>messages</code></h2>\n<ul>\n<li>Messages can have a <code>state</code> to indicate if this alert newly appeared (<code>NEW</code>) or disappeared (<code>ENDED</code>). Together with a common <code>code</code>, it is now possible e.g. to correlate events like &quot;<em>pressure too high</em>&quot; and &quot;<em>pressure not too high anymore</em>&quot;.</li>\n<li>What was before <code>type</code> has now been renamed to <code>source</code> to indicate if the message comes from the <code>DEVICE</code> itself or from the general infrastructure <code>TECHNICAL_INFO</code>.</li>\n<li>The <code>type</code> in v3 indicates the debug level of the message (<code>INFO</code>, <code>WARNING</code>, <code>ERROR</code>, <code>UNKNOWN</code>) and complements <code>severity</code> for describing urgency and relevance of a message.</li>\n</ul>\n<h2><code>measurements</code></h2>\n<ul>\n<li>The optional <code>context</code> section contains information on how to interpret the measurements. This includes\n<ul>\n<li>The field <code>type</code> (Number, String or Boolean value) indicates which format the <values> of a series have.</li>\n<li>The <code>unit</code> key can be used to describe the unit of measurement. There are different understandings and standardizations for units ('C' stands for Coulomb, not Celsius), like <a href=\"https://en.wikipedia.org/wiki/International_System_of_Units\">International System of Units</a>, <a href=\"https://tools.ietf.org/html/draft-ietf-core-senml-14#section-12.1\">SenML</a>, <a href=\"https://www.iso.org/obp/ui/#iso:std:iso:80000:-1:ed-1:v1:en\">ISO 80000-1:2009</a>, etc.. The <code>unit</code> key here is a string without further restriction. If that is needed, it can be specified via an URI in <code>namespace</code>.</li>\n<li><code>namespace</code> may contain an URI to identify further detail on the values in this measurement section. This can be a description of units, lengths or naming conventions for measurement points, but also a reference to a semantic model.</li>\n<li>Each entry in <code>limits</code> can be constant or an array of values. If constant, it applies to all corresponding measurements in <code>series</code>. If an array of the same length than the corresponding <code>series</code> is provided, each entry limits the measurement at the respective position. 'null' can be used to skip a limit for an individual measurement.</li>\n</ul>\n</li>\n<li><code>series</code> can contain other than numeric measurements if <code>context.type</code> contains any of 'BASE64', 'BOOLEAN', 'NUMBER', 'STRING', 'REF' or 'OTHER', the corresponding measurement in series are represented in this type ('REF', 'OTHER' and 'BASE64' are Strings). This way for example, even small base64 encoded binary data, as send from iolink devices, can be included. 'REF' could be used in multipart messages to reference to other sections or even external content.</li>\n<li><code>time</code> field replaces the v2 <code>$_time</code> field, which is difficult to represent in some programming languages. Note that time is not an Integer anymore but a JSON number, to allow sub-millisecond values.</li>\n</ul>\n<h2><code>processes</code></h2>\n<ul>\n<li>No more <code>shutoffValues</code> and <code>shutoffPhase</code><br>\n<code>shutoffValues</code> can be expressed as <code>specialValues</code> with a meaningful name, <code>shutoffPhase</code> is the measurement with the latest timestamp <code>ts</code>.</li>\n<li>Same improvements in measurements</li>\n</ul>\n","url":"/blog/2019/11/26/Version-3-final","title":"Protocol v3 final","date":"2019-11-26T00:00:00.000Z","tags":["v3"],"prev":{"url":"/blog/2019/3/1/Version-3","title":"Protocol Version 3 release candidate"}}
\ No newline at end of file
diff --git a/files/posts/Version-3.json b/files/posts/Version-3.json
index 267755a..78ab050 100644
--- a/files/posts/Version-3.json
+++ b/files/posts/Version-3.json
@@ -1 +1 @@
-{"name":"Version-3","content":"<p>After a long discussion phase, the PPMP version 3 is finally linked on the specification page. Special thanks to <a href=\"https://github.com/bgusach\">bgusach</a>, <a href=\"https://github.com/bf-bryants\">bf-bryants</a>, <a href=\"https://github.com/muelsen\">muelsen</a> and <a href=\"https://github.com/alaendle\">alaendle</a> for their contributions <a href=\"https://github.com/eclipse/unide/issues\">via github issues</a>!</p>\n<h1>The most important changes</h1>\n<ul>\n<li><code>context</code> section in <code>measurements</code><br>\nThe optional context section ccontains information on how to interpret the measurements. This includes\n<ul>\n<li>the field '<code>type</code>' (Number, String or Boolean value) indicates which format the <code>&lt;values&gt;</code> of a <code>series</code> have.</li>\n<li>The <code>unit</code> key can be used to describe the unit of measurement. There are different understandings and standarizations for units ('C' stands for Coulomb, not Celsius), like <a href=\"https://en.wikipedia.org/wiki/International_System_of_Units\">International System of Units</a>, <a href=\"https://tools.ietf.org/html/draft-ietf-core-senml-14#section-12.1\">SenML</a>, <a href=\"https://www.iso.org/obp/ui/#iso:std:iso:80000:-1:ed-1:v1:en\">ISO 80000-1:2009</a>, etc.. The <code>unit</code> key here is a string without further restriction. If that is needed, it can be specified via an URI in <code>namespace</code>.</li>\n<li><code>namespace</code> may contain an URI to identify further detail on the values in this measurement section. This can be a description of units, lengths or naming conventions for measurement points, but also a reference to a semantic model.</li>\n</ul>\n</li>\n<li><code>series</code> can contain other than numeric measurements<br>\nif <code>context.type</code> contains any of 'BASE64', 'BOOLEAN', 'NUMBER', 'STRING', 'REF' or 'OTHER', the corresponding measurement in <code>series</code> are represented in this type ('REF', 'OTHER' and 'BASE64' are Strings). This way for example, even small base64 encoded binary data, as send from iolink devices, can be included. 'REF' could be used in multipart messages to reference to other sections or even external content.</li>\n<li><code>mode</code> and <code>state</code> are introduced in <code>device</code> and replaces v2's <code>operationalMode</code>, which was found to not clearly diffentiate the functional mode and technical state.</li>\n<li>A common <code>id</code> was used and replaces different spellings in <code>deviceID</code>, <code>partID</code>, <code>program.id</code>.</li>\n<li><code>additionalData</code> in the various sections is used for any kind of not-specified data, that should be included in the telegram. Where v2's <code>metaData</code> had to be key/String pairs, <code>additionalData</code> can also be complex JSON objects.</li>\n<li><code>time</code> field replaces the v2 <code>$_time</code> field, which is difficult to represent in some programming languages. Note that <code>time</code> is not an Integer anymore but a JSON number, to allow sub-millisecond values.</li>\n<li>no more <code>shutoffValues</code> and <code>shutoffPhase</code><br>\n<code>shutoffValues</code> can be expressed as specialValues with a meaningful <code>name</code>, <code>shutoffPhase</code> is the measurement with the latest timestamp <code>ts</code>.</li>\n<li>a common definition.json schema is used for sections that are used in multiple telegrams. With the help of JSON schema 'anyOf', sections inherit and can extend from these base definitions.</li>\n</ul>\n<h1>Next steps</h1>\n<p>The most recent updates and this post should finalize the v3 schema. Vetos with suggestions that find a consensus fairly soon after posting are stil accepted <a href=\"https://github.com/eclipse/unide/issues\">via github issues</a>. Major changes and suggestions should rather be addressed to a v4.</p>\n<p>The bindings and server should be updated to accept and validate v3 as well. After updating further dependencies, creating eclipse CQs and undergoing the release process, everything should be wrapped up in the unide release 0.3.0.</p>\n","url":"/blog/2019/3/1/Version-3","title":"PPMP Version 3 release candidate","date":"2019-03-01T00:00:00.000Z","tags":["v3"],"prev":{"url":"/blog/2018/9/4/Template-for-PPMP-transformation","title":"PPMP Use Cases: Template for PPMP transformation"},"next":{"url":"/blog/2019/11/26/Version-3-final","title":"PPMP Version 3 final"}}
\ No newline at end of file
+{"name":"Version-3","content":"<p>After a long discussion phase, the Production Performance Management Protocol version 3 is finally linked on the specification page. Special thanks to <a href=\"https://github.com/bgusach\">bgusach</a>, <a href=\"https://github.com/bf-bryants\">bf-bryants</a>, <a href=\"https://github.com/muelsen\">muelsen</a> and <a href=\"https://github.com/alaendle\">alaendle</a> for their contributions <a href=\"https://github.com/eclipse/unide/issues\">via github issues</a>!</p>\n<h1>The most important changes</h1>\n<ul>\n<li><code>context</code> section in <code>measurements</code><br>\nThe optional context section ccontains information on how to interpret the measurements. This includes\n<ul>\n<li>the field '<code>type</code>' (Number, String or Boolean value) indicates which format the <code>&lt;values&gt;</code> of a <code>series</code> have.</li>\n<li>The <code>unit</code> key can be used to describe the unit of measurement. There are different understandings and standarizations for units ('C' stands for Coulomb, not Celsius), like <a href=\"https://en.wikipedia.org/wiki/International_System_of_Units\">International System of Units</a>, <a href=\"https://tools.ietf.org/html/draft-ietf-core-senml-14#section-12.1\">SenML</a>, <a href=\"https://www.iso.org/obp/ui/#iso:std:iso:80000:-1:ed-1:v1:en\">ISO 80000-1:2009</a>, etc.. The <code>unit</code> key here is a string without further restriction. If that is needed, it can be specified via an URI in <code>namespace</code>.</li>\n<li><code>namespace</code> may contain an URI to identify further detail on the values in this measurement section. This can be a description of units, lengths or naming conventions for measurement points, but also a reference to a semantic model.</li>\n</ul>\n</li>\n<li><code>series</code> can contain other than numeric measurements<br>\nif <code>context.type</code> contains any of 'BASE64', 'BOOLEAN', 'NUMBER', 'STRING', 'REF' or 'OTHER', the corresponding measurement in <code>series</code> are represented in this type ('REF', 'OTHER' and 'BASE64' are Strings). This way for example, even small base64 encoded binary data, as send from iolink devices, can be included. 'REF' could be used in multipart messages to reference to other sections or even external content.</li>\n<li><code>mode</code> and <code>state</code> are introduced in <code>device</code> and replaces v2's <code>operationalMode</code>, which was found to not clearly diffentiate the functional mode and technical state.</li>\n<li>A common <code>id</code> was used and replaces different spellings in <code>deviceID</code>, <code>partID</code>, <code>program.id</code>.</li>\n<li><code>additionalData</code> in the various sections is used for any kind of not-specified data, that should be included in the telegram. Where v2's <code>metaData</code> had to be key/String pairs, <code>additionalData</code> can also be complex JSON objects.</li>\n<li><code>time</code> field replaces the v2 <code>$_time</code> field, which is difficult to represent in some programming languages. Note that <code>time</code> is not an Integer anymore but a JSON number, to allow sub-millisecond values.</li>\n<li>no more <code>shutoffValues</code> and <code>shutoffPhase</code><br>\n<code>shutoffValues</code> can be expressed as specialValues with a meaningful <code>name</code>, <code>shutoffPhase</code> is the measurement with the latest timestamp <code>ts</code>.</li>\n<li>a common definition.json schema is used for sections that are used in multiple telegrams. With the help of JSON schema 'anyOf', sections inherit and can extend from these base definitions.</li>\n</ul>\n<h1>Next steps</h1>\n<p>The most recent updates and this post should finalize the v3 schema. Vetos with suggestions that find a consensus fairly soon after posting are stil accepted <a href=\"https://github.com/eclipse/unide/issues\">via github issues</a>. Major changes and suggestions should rather be addressed to a v4.</p>\n<p>The bindings and server should be updated to accept and validate v3 as well. After updating further dependencies, creating eclipse CQs and undergoing the release process, everything should be wrapped up in the unide release 0.3.0.</p>\n","url":"/blog/2019/3/1/Version-3","title":"Protocol Version 3 release candidate","date":"2019-03-01T00:00:00.000Z","tags":["v3"],"prev":{"url":"/blog/2018/9/4/Template-for-PPMP-transformation","title":"Use Cases: Template for transformation"},"next":{"url":"/blog/2019/11/26/Version-3-final","title":"Protocol v3 final"}}
\ No newline at end of file
diff --git a/files/posts/grinding-machine-scenario.json b/files/posts/grinding-machine-scenario.json
index 19aaf10..9c6db55 100644
--- a/files/posts/grinding-machine-scenario.json
+++ b/files/posts/grinding-machine-scenario.json
@@ -1 +1 @@
-{"name":"grinding-machine-scenario","content":"<h2>Abstract</h2>\n<p>In this blog post we present a real world condition monitoring scenario used in<br>\nthe <a href=\"https://iot.eclipse.org/testbeds/production-performance-management/#\">Eclipse Production Performance Management Testbed</a>, where Unide and<br>\nPPMP plays a crucial role. Moreover, we also provide a code repository and<br>\ninstructions so that you can recreate the scenario in your own computer and<br>\nlearn about its components and the communication with each other.</p>\n<h2>Introduction</h2>\n<p>In the context of the <a href=\"https://iot.eclipse.org/testbeds/production-performance-management/#\">Eclipse Production Performance Management Testbed</a>, a<br>\nreal world condition monitoring scenario has been recreated, in which a<br>\ngrinding machine is being continuously monitored allowing to have real time<br>\nhealth checks and prevent unexpected failures.</p>\n<p>This scenario consists of the following building blocks: device, gateway,<br>\nbackend. The communication between them happens seamlessly thanks to the<br>\nProduction Performance management Protocol (PPMP).</p>\n<ul>\n<li>\n<p>The device, i.e. the grinding machine, has been retrofitted with an<br>\nacceleration sensor attached to one of its critical components. The data<br>\nprovided by this sensor is routed to the gateway in the form of a <a href=\"https://www.eclipse.org/unide/specification/measurement-message#messageDetail\">PPMP<br>\nMeasurement Message</a>.</p>\n</li>\n<li>\n<p>The gateway receives the raw acceleration measurements, calculates some<br>\nstatistical characteristics and and applies some machine learning techniques<br>\nto them in order to evaluate the condition of the grinding machine. Then both<br>\nthe statistical values and the condition are routed to the backend, again in<br>\nthe form of a PPMP Measurement Message.</p>\n</li>\n<li>\n<p>The backend, usually in the cloud, is any component that &quot;speaks PPMP&quot; and<br>\nperforms meaningful operations on the incoming messages. Most frequently it<br>\nis responsible for storing the arriving data and making it available to apps<br>\nthat want to consume it. Common responsibilities of these apps are the<br>\nrepresentation or display of the data (e.g. dashboards), or workflows<br>\nmanagement (e.g. the grinding machine is in bad condition and an inspection<br>\nmust be carried out).</p>\n<p>The backend can be swapped effortless with any entity adhering to PPMP standard.<br>\nIn the Eclipse PPM Testbed at least two different backends have been used:</p>\n<ul>\n<li>One directly based on <a href=\"https://github.com/eclipse/unide\">Unide</a></li>\n<li>One based on <a href=\"https://www.contact-software.com/en/products/elements-for-iot/\">CONTACT Elements for IoT</a>.</li>\n</ul>\n</li>\n</ul>\n<h2>Hands-on demonstration</h2>\n<p>In order to make this scenario more hands-on and interesting, within the<br>\n<a href=\"https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement\">Production Performance Management Testbed repository</a> project in Github, we<br>\nhave set up a <a href=\"https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement/tree/master/grinding-machine\">subproject for the grinding machine scenario</a>. There you can<br>\nfind a thorough description and code to simulate the device and the gateway,<br>\nand route messages to a given backend. The only requirements are git and conda<br>\n(the easiest way to get conda is to <a href=\"https://conda.io/miniconda.html\">install miniconda</a>).</p>\n<p>So, let's get started! First of all, open your terminal and clone the<br>\nrepository:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">git</span> clone https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement eclipse-testbed-ppm\n$ <span class=\"token function\">cd</span> eclipse-testbed-ppm/grinding-machine\n</code></pre>\n<p>Then move to the grinding machine subproject directory:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">cd</span> eclipse-testbed-ppm/grinding-machine\n</code></pre>\n<p>In that folder you will see two subfolders. The first one<br>\n<code>unide-grinding-machine</code> contains a Python program that simulates grinding<br>\nmachine and the second one <code>unide-grinding-machine-gateway</code> simulates the<br>\ngateway.</p>\n<h3>Grinding Machine simulator</h3>\n<p>Let's start with the first component. First <code>cd</code> to <code>unide-grinding-machine</code><br>\nand then create the conda environment:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ conda <span class=\"token function\">env</span> create --prefix<span class=\"token operator\">=</span>env\n</code></pre>\n<p>And then in order to use this environment, we need to activate it.</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">source</span> activate <span class=\"token function\">env</span>    <span class=\"token comment\"># or in windows: activate env </span>\n</code></pre>\n<p>Run <code>unide-grinding-machine -h</code> to get familiar with the CLI. With this<br>\nexecutable we can generate some machine grinding data, and (for the moment)<br>\nprint messages to the console. To do so, run <code>unide-grinding-machine send random</code> and you should get a large message on the console. This is the PPMP<br>\nmessage ought to be sent to the gateway.</p>\n<p>We don't have a gateway so far, but don't worry, we will get to that in a<br>\nminute. Don't close this console!</p>\n<h3>Gateway simulator</h3>\n<p>Open a new console, and similarly to the previous point, first <code>cd</code> to<br>\n<code>unide-grinding-machine-gateway</code>, create the environment (<code>conda env create --prefix=env</code>) and activate it (<code>source activate env</code>).</p>\n<p>The run the command <code>unide-grinding-machine-gateway -h</code> to test that everything<br>\nis in place. You should get the CLI documentation.</p>\n<p>Now, let's fire up the gateway by calling <code>unide-grinding-machine-gateway start_server</code>, and a message like this should show up:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">Running <span class=\"token operator\">&lt;</span>unide_grinding_machine_gateway.server.App object at 0x<span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span>.<span class=\"token operator\">></span>\nListening on http://127.0.0.1:5000\nPress Ctrl-C to stop<span class=\"token punctuation\">..</span>.\n</code></pre>\n<p>We are getting closer. Leave the gateway running.</p>\n<h3>Communication Device-Gateway</h3>\n<p>Let's go back to the previous console where we had the <code>unide-grinding-machine</code><br>\nenvironment and  call again the <code>unide-grinding-machine</code> program, but this time<br>\npassing the as an argument where the gateway is listening to messages.</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ unide-grinding-machine send random --endpoint<span class=\"token operator\">=</span>http://127.0.0.1:5000\n</code></pre>\n<p>If you take peek at the gateway output, you should see new information printed<br>\nout, which is a PPMP message containing the result of the classification<br>\nalgorithms applied to the device data we just sent to it.</p>\n<p>We are getting somewhere! But still, it is not extremely useful to print some<br>\ncharacters into a console, is it?</p>\n<h3>Communication Device-Gateway-Backend</h3>\n<p>There is only a small but relevant point missing: the routing from the gateway<br>\nto the backend. We need a backend and the Unide project provides a service that<br>\ncan be used as a playground for these purposes. So let's restart the gateway,<br>\nthis time passing the Unide endpoint:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ unide-grinding-machine-gateway start_server --endpoint<span class=\"token operator\">=</span>https://unide.eclipse.org/rest/v2\n</code></pre>\n<p>Now we can use the <code>unide-grinding-machine</code> to send raw data to the gateway<br>\nwhich in turn sends its results to the backend.  In order to be able to<br>\nidentify this data later, we are going to define a proper device ID (argument<br>\n<code>--device-id</code>), and also tell it to send data once each 10 seconds (argument<br>\n<code>--period</code>):</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ unide-grinding-machine send random --endpoint<span class=\"token operator\">=</span>http://127.0.0.1:5000 --device-id<span class=\"token operator\">=</span>IoT-000028--3 --period<span class=\"token operator\">=</span>10\n</code></pre>\n<p>Once started, a continuous flow of data is pumped through each component until<br>\nit reaches the backend, allowing us to use the applications that consume this<br>\ndata. For instance, the basic backend provided by Unide offers a <a href=\"https://grafana.com/\">Grafana</a> based<br>\ndashboard that offers live monitoring of the statistical values calculated in the<br>\ngateway:</p>\n<p><img src=\"/unide/images/blog/grinding-machine-grafana-dashboard.png\" alt=\"Grafana based dashboard monitoring grinding machine\"></p>\n<p>If instead of that we use the the <a href=\"https://www.contact-software.com/en/products/elements-for-iot/\">CONTACT Elements for IoT</a> based backend,<br>\nwe can see a different and richer dashboard: charts, 3D models, list of<br>\nmaintenance events, device master data and the Activity Stream, a place where<br>\ndifferent parties can exchange information related to the grinding machine:</p>\n<p><img src=\"/unide/images/blog/grinding-machine-ce4iot-dashboard.png\" alt=\"CONTACT Elements for IoT Dashboard\"></p>\n","url":"/blog/2018/2/13/grinding-machine-scenario","title":"PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed","date":"2018-02-13T00:00:00.000Z","tags":["use cases"],"prev":{"url":"/blog/2018/2/11/Transform-PPMP-with-camel","title":"PPMP Use Cases: Simple Transformation with Apache Camel"},"next":{"url":"/blog/2018/3/26/Release-0.2.0","title":"Unide 0.2.0 released"}}
\ No newline at end of file
+{"name":"grinding-machine-scenario","content":"<h2>Abstract</h2>\n<p>In this blog post we present a real world condition monitoring scenario used in<br>\nthe <a href=\"https://iot.eclipse.org/testbeds/production-performance-management/#\">Eclipse Production Performance Management Testbed</a>, where Unide and<br>\nthe Production Performance Management Protocol plays a crucial role. Moreover, we also provide a code repository and<br>\ninstructions so that you can recreate the scenario in your own computer and<br>\nlearn about its components and the communication with each other.</p>\n<h2>Introduction</h2>\n<p>In the context of the <a href=\"https://iot.eclipse.org/testbeds/production-performance-management/#\">Eclipse Production Performance Management Testbed</a>, a<br>\nreal world condition monitoring scenario has been recreated, in which a<br>\ngrinding machine is being continuously monitored allowing to have real time<br>\nhealth checks and prevent unexpected failures.</p>\n<p>This scenario consists of the following building blocks: device, gateway,<br>\nbackend. The communication between them happens seamlessly thanks to the<br>\nProduction Performance management Protocol (PPMP).</p>\n<ul>\n<li>\n<p>The device, i.e. the grinding machine, has been retrofitted with an<br>\nacceleration sensor attached to one of its critical components. The data<br>\nprovided by this sensor is routed to the gateway in the form of a <a href=\"https://www.eclipse.org/unide/specification/measurement-message#messageDetail\">Production Performance Management Protocol<br>\nMeasurement Message</a>.</p>\n</li>\n<li>\n<p>The gateway receives the raw acceleration measurements, calculates some<br>\nstatistical characteristics and and applies some machine learning techniques<br>\nto them in order to evaluate the condition of the grinding machine. Then both<br>\nthe statistical values and the condition are routed to the backend, again in<br>\nthe form of a Production Performance Management Protocol Measurement Message.</p>\n</li>\n<li>\n<p>The backend, usually in the cloud, is any component that &quot;speaks PPMP&quot; and<br>\nperforms meaningful operations on the incoming messages. Most frequently it<br>\nis responsible for storing the arriving data and making it available to apps<br>\nthat want to consume it. Common responsibilities of these apps are the<br>\nrepresentation or display of the data (e.g. dashboards), or workflows<br>\nmanagement (e.g. the grinding machine is in bad condition and an inspection<br>\nmust be carried out).</p>\n<p>The backend can be swapped effortless with any entity adhering to the Production Performance Management Protocol standard.<br>\nIn the Eclipse PPM Testbed at least two different backends have been used:</p>\n<ul>\n<li>One directly based on <a href=\"https://github.com/eclipse/unide\">Unide</a></li>\n<li>One based on <a href=\"https://www.contact-software.com/en/products/elements-for-iot/\">CONTACT Elements for IoT</a>.</li>\n</ul>\n</li>\n</ul>\n<h2>Hands-on demonstration</h2>\n<p>In order to make this scenario more hands-on and interesting, within the<br>\n<a href=\"https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement\">Production Performance Management Testbed repository</a> project in Github, we<br>\nhave set up a <a href=\"https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement/tree/master/grinding-machine\">subproject for the grinding machine scenario</a>. There you can<br>\nfind a thorough description and code to simulate the device and the gateway,<br>\nand route messages to a given backend. The only requirements are git and conda<br>\n(the easiest way to get conda is to <a href=\"https://conda.io/miniconda.html\">install miniconda</a>).</p>\n<p>So, let's get started! First of all, open your terminal and clone the<br>\nrepository:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">git</span> clone https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement eclipse-testbed-ppm\n$ <span class=\"token function\">cd</span> eclipse-testbed-ppm/grinding-machine\n</code></pre>\n<p>Then move to the grinding machine subproject directory:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">cd</span> eclipse-testbed-ppm/grinding-machine\n</code></pre>\n<p>In that folder you will see two subfolders. The first one<br>\n<code>unide-grinding-machine</code> contains a Python program that simulates grinding<br>\nmachine and the second one <code>unide-grinding-machine-gateway</code> simulates the<br>\ngateway.</p>\n<h3>Grinding Machine simulator</h3>\n<p>Let's start with the first component. First <code>cd</code> to <code>unide-grinding-machine</code><br>\nand then create the conda environment:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ conda <span class=\"token function\">env</span> create --prefix<span class=\"token operator\">=</span>env\n</code></pre>\n<p>And then in order to use this environment, we need to activate it.</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">source</span> activate <span class=\"token function\">env</span>    <span class=\"token comment\"># or in windows: activate env </span>\n</code></pre>\n<p>Run <code>unide-grinding-machine -h</code> to get familiar with the CLI. With this<br>\nexecutable we can generate some machine grinding data, and (for the moment)<br>\nprint messages to the console. To do so, run <code>unide-grinding-machine send random</code> and you should get a large message on the console. This is the Production Performance Management Protocol<br>\nmessage ought to be sent to the gateway.</p>\n<p>We don't have a gateway so far, but don't worry, we will get to that in a<br>\nminute. Don't close this console!</p>\n<h3>Gateway simulator</h3>\n<p>Open a new console, and similarly to the previous point, first <code>cd</code> to<br>\n<code>unide-grinding-machine-gateway</code>, create the environment (<code>conda env create --prefix=env</code>) and activate it (<code>source activate env</code>).</p>\n<p>The run the command <code>unide-grinding-machine-gateway -h</code> to test that everything<br>\nis in place. You should get the CLI documentation.</p>\n<p>Now, let's fire up the gateway by calling <code>unide-grinding-machine-gateway start_server</code>, and a message like this should show up:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">Running <span class=\"token operator\">&lt;</span>unide_grinding_machine_gateway.server.App object at 0x<span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span>.<span class=\"token operator\">></span>\nListening on http://127.0.0.1:5000\nPress Ctrl-C to stop<span class=\"token punctuation\">..</span>.\n</code></pre>\n<p>We are getting closer. Leave the gateway running.</p>\n<h3>Communication Device-Gateway</h3>\n<p>Let's go back to the previous console where we had the <code>unide-grinding-machine</code><br>\nenvironment and  call again the <code>unide-grinding-machine</code> program, but this time<br>\npassing the as an argument where the gateway is listening to messages.</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ unide-grinding-machine send random --endpoint<span class=\"token operator\">=</span>http://127.0.0.1:5000\n</code></pre>\n<p>If you take peek at the gateway output, you should see new information printed<br>\nout, which is a Production Performance Management Protocol message containing the result of the classification<br>\nalgorithms applied to the device data we just sent to it.</p>\n<p>We are getting somewhere! But still, it is not extremely useful to print some<br>\ncharacters into a console, is it?</p>\n<h3>Communication Device-Gateway-Backend</h3>\n<p>There is only a small but relevant point missing: the routing from the gateway<br>\nto the backend. We need a backend and the Unide project provides a service that<br>\ncan be used as a playground for these purposes. So let's restart the gateway,<br>\nthis time passing the Unide endpoint:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ unide-grinding-machine-gateway start_server --endpoint<span class=\"token operator\">=</span>https://unide.eclipse.org/rest/v2\n</code></pre>\n<p>Now we can use the <code>unide-grinding-machine</code> to send raw data to the gateway<br>\nwhich in turn sends its results to the backend.  In order to be able to<br>\nidentify this data later, we are going to define a proper device ID (argument<br>\n<code>--device-id</code>), and also tell it to send data once each 10 seconds (argument<br>\n<code>--period</code>):</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ unide-grinding-machine send random --endpoint<span class=\"token operator\">=</span>http://127.0.0.1:5000 --device-id<span class=\"token operator\">=</span>IoT-000028--3 --period<span class=\"token operator\">=</span>10\n</code></pre>\n<p>Once started, a continuous flow of data is pumped through each component until<br>\nit reaches the backend, allowing us to use the applications that consume this<br>\ndata. For instance, the basic backend provided by Unide offers a <a href=\"https://grafana.com/\">Grafana</a> based<br>\ndashboard that offers live monitoring of the statistical values calculated in the<br>\ngateway:</p>\n<p><img src=\"/unide/images/blog/grinding-machine-grafana-dashboard.png\" alt=\"Grafana based dashboard monitoring grinding machine\"></p>\n<p>If instead of that we use the the <a href=\"https://www.contact-software.com/en/products/elements-for-iot/\">CONTACT Elements for IoT</a> based backend,<br>\nwe can see a different and richer dashboard: charts, 3D models, list of<br>\nmaintenance events, device master data and the Activity Stream, a place where<br>\ndifferent parties can exchange information related to the grinding machine:</p>\n<p><img src=\"/unide/images/blog/grinding-machine-ce4iot-dashboard.png\" alt=\"CONTACT Elements for IoT Dashboard\"></p>\n","url":"/blog/2018/2/13/grinding-machine-scenario","title":"Use Cases: Unide and the Eclipse Testbed","date":"2018-02-13T00:00:00.000Z","tags":["use cases"],"prev":{"url":"/blog/2018/2/11/Transform-PPMP-with-camel","title":"Production Performance Management Protocol Use Cases: Simple Transformation with Apache Camel"},"next":{"url":"/blog/2018/3/26/Release-0.2.0","title":"Unide 0.2.0 released"}}
\ No newline at end of file
diff --git a/files/posts/i40-testbed-started.json b/files/posts/i40-testbed-started.json
index e5b3953..ef40270 100644
--- a/files/posts/i40-testbed-started.json
+++ b/files/posts/i40-testbed-started.json
@@ -1 +1 @@
-{"name":"i40-testbed-started","content":"<p>The Eclipse IoT Working group has started another testbed around Production Performance Management. Together with other Eclipse projects but also manufacturing companies, we aim to showcase and test the software in real life scenarios.<br>\n<a href=\"https://www.contact-software.com\">Contact Software</a>, <a href=\"https://www.eurotech.com\">Eurotech</a> and <a href=\"https://www.eclipse.org/4diac/\">Eclipse 4diac</a> provide bindings to actual machines, Unide and PPMP will be used for structuring and normalizing the information, <a href=\"https://projects.eclipse.org/projects/iot.hono\">Ecipse Hono</a> and other provide the advanced infrastructure and <a href=\"https://www.influxdata.com/\">influx data</a> persists the data.<br>\nYou can find more information in the <a href=\"https://eclipse.org/org/press-release/20171019_industry40_testbed.php\">Press Release</a> or the <a href=\"https://iot.eclipse.org/testbeds/production-performance-management/#\">homepage of the testbed</a>.</p>\n","url":"/blog/2017/10/19/i40-testbed-started","title":"Unide is part of Industry 4.0 Testbed","date":"2017-10-19T00:00:00.000Z","tags":["testbed"],"prev":{"url":"/blog/2017/10/6/DZone-article-published","title":"DZone article published"},"next":{"url":"/blog/2018/1/26/New-website","title":"Updated Website"}}
\ No newline at end of file
+{"name":"i40-testbed-started","content":"<p>The Eclipse IoT Working group has started another testbed around Production Performance Management. Together with other Eclipse projects but also manufacturing companies, we aim to showcase and test the software in real life scenarios.<br>\n<a href=\"https://www.contact-software.com\">Contact Software</a>, <a href=\"https://www.eurotech.com\">Eurotech</a> and <a href=\"https://www.eclipse.org/4diac/\">Eclipse 4diac</a> provide bindings to actual machines, Unide and the Production Performance Management Protocol will be used for structuring and normalizing the information, <a href=\"https://projects.eclipse.org/projects/iot.hono\">Ecipse Hono</a> and other provide the advanced infrastructure and <a href=\"https://www.influxdata.com/\">influx data</a> persists the data.<br>\nYou can find more information in the <a href=\"https://eclipse.org/org/press-release/20171019_industry40_testbed.php\">Press Release</a> or the <a href=\"https://iot.eclipse.org/testbeds/production-performance-management/#\">homepage of the testbed</a>.</p>\n","url":"/blog/2017/10/19/i40-testbed-started","title":"Unide is part of Industry 4.0 Testbed","date":"2017-10-19T00:00:00.000Z","tags":["testbed"],"prev":{"url":"/blog/2017/10/6/DZone-article-published","title":"DZone article published"},"next":{"url":"/blog/2018/1/26/New-website","title":"Updated Website"}}
\ No newline at end of file
diff --git a/index.html b/index.html
index 698f68e..e66786e 100644
--- a/index.html
+++ b/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Welcome</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/2400600c1c5793c50ab4.css">
+    <title data-n-head="true">Eclipse unide - Welcome</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/2400600c1c5793c50ab4.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item nuxt-link-exact-active is-active">
@@ -26,6 +26,6 @@
     We started to capture this information in a simple payload specification and just like in the introducing language example where you can use phrases via phone, letter or in person, the payload is meant to be sent over different protocols (REST, MQTT, AMQP). This payload is the Production Performance Management Protocol (<i>PPMP</i>).
     </p> <div class="card is-pulled-left"><div class="card-image"><figure class="image"><img src="images/eclipse-426x100.png" alt="Eclipse logo" title="Eclipse logo"></figure></div></div> <p>
     In order to, first, leverage the Eclipse IoT stack in Industry 4.0 scenarios and, second, build a lively community around the specification, we consider the Eclipse iot working group as the premier place to host Unide.
-    </p></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>window.__NUXT__={layout:"default",data:[{}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/ab8f3355d1ddf7500408.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </p></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>window.__NUXT__={layout:"default",data:[{}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/30395b316d9140e79ffe.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/proposal/index.html b/proposal/index.html
index 427bab2..7b43230 100644
--- a/proposal/index.html
+++ b/proposal/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Welcome</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css">
+    <title data-n-head="true">Eclipse unide - Welcome</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -18,24 +18,24 @@
   What is Unide?
   </h1> <p>Noticeably in the recent years, there’s a continuous increase in demand, price pressure and complexity in manufacturing. Things need to move faster, be more flexible, and fulfill higher quality standards. Often, optimization in this regard is referred to as Production Performance Management (PPM). The basis for this optimization is information from the machines and devices related to a product, such as:</p> <ul><li>Torque and angle for a tightening process</li> <li>Influx / efflux of throttle plate test station</li> <li>Energy consumption of spindles in a cutting process</li></ul> <p>Nowadays, brand new machines and software are often shipped with powerful communication capabilities. For older machines, smaller factories and SMEs (Small and Medium Enterprises), it can be a challenge to catch up with the complex IT standards that come along. In fact, sometimes the hardware itself imposes limits.</p> <p>Nevertheless, in a manufacturing environment, monitoring makes most sense if there are no blind spots. To achieve that, upgrading machines and software is one option, retrofitting another. For the latter, the hurdle should be as low as possible. Yet, there should be a few guidelines for a one-way exchange of the most necessary information (machine messages, measurements):</p> <p>The structure of the data shall be:</p> <ul><li>flexible enough to be carried via multiple protocols,<br>in order to not reinvent the wheel and leverage on existing technology</li> <li>similar in each case,<br>to be able to use the same software to interpret the data</li> <li>easily understandable,<br>so that implementation in a custom environment won’t be a hurdle</li> <li>as simple as possible,<br>to not produce an opinionated framework</li> <li>and yet containing enough information for the use cases,<br>to fulfill the functional requirements</li></ul> <p>We decided the least common denominator of necessary information are the mandatory fields, common relevant information to be optional, and the possibility for further extension points through metadata.</p> <h2>
     Industry benefits of Unide
-  </h2> <p>This open source project aims to make PPM affordable for smaller organizations by reducing cost and complexity of data communication. Through sample implementations of a simple information structure (Production Performance Management Protocol - PPMP) tailored to manufacturing environments, we want to encourage the community to use, share, and evolve this structure together.</p> <p>PPMP has already been introduced as part of a PPM testbed at a medium-sized Bosch plant, working with many SMEs as partners and suppliers. Furthermore, this testbed aims to create an ecosystem which allows SMEs and larger companies to collaborate efficiently.</p> <p>The PPMP takes an important role by ensuring interoperability between different types of devices and software. It is designed to gather and aggregate machine and sensor data from different devices. It focuses on defining the JSON payload which can be transferred via a variety of transports (REST, AMQP, MQTT). The primary goals of PPMP are:</p> <ol><li>Integrating devices (across domains; e.g. manufacturing or energy) for data aggregation and gathering purposes</li> <li>Providing a very lightweight and easy-to-use solution for small and medium-sized enterprises (SMEs)</li></ol> <h1>
+  </h2> <p>This open source project aims to make PPM affordable for smaller organizations by reducing cost and complexity of data communication. Through sample implementations of a simple information structure (Production Performance Management Protocol - PPMP) tailored to manufacturing environments, we want to encourage the community to use, share, and evolve this structure together.</p> <p>The Production Performance Management Protocol has already been introduced as part of a PPM testbed at a medium-sized Bosch plant, working with many SMEs as partners and suppliers. Furthermore, this testbed aims to create an ecosystem which allows SMEs and larger companies to collaborate efficiently.</p> <p>The Production Performance Management Protocol takes an important role by ensuring interoperability between different types of devices and software. It is designed to gather and aggregate machine and sensor data from different devices. It focuses on defining the JSON payload which can be transferred via a variety of transports (REST, AMQP, MQTT). The primary goals of the Production Performance Management Protocol are:</p> <ol><li>Integrating devices (across domains; e.g. manufacturing or energy) for data aggregation and gathering purposes</li> <li>Providing a very lightweight and easy-to-use solution for small and medium-sized enterprises (SMEs)</li></ol> <h1>
     Scope
-  </h1> <p>The Eclipse Unide project publishes the current version of Production Performance Management Protocol (PPMP) and develops simple server/client implementations. The implementations store the payloads in a database and displays them through a simple user interface. Everyone can then use these samples for their custom condition monitoring applications.</p> <p>The project will contain:</p> <p><em>PPMP Specification:</em></p> <ul><li>Machine message and measurement interfaces</li> <li>JSON based</li> <li>Versioned</li></ul> <p><em>Client:</em></p> <ul><li>Chrome / nw.js App</li> <li>For Industry Machines and Devices</li> <li>Node.js/Python client running on Raspberry Pi</li></ul> <p><em>Server:</em></p> <ul><li>(REST) Server including persistence and simple data visualization</li> <li>Multiple examples for different technologies</li></ul> <h1>
+  </h1> <p>The Eclipse Unide project publishes the current version of Production Performance Management Protocol (PPMP) and develops simple server/client implementations. The implementations store the payloads in a database and displays them through a simple user interface. Everyone can then use these samples for their custom condition monitoring applications.</p> <p>The project will contain:</p> <p><em>Production Performance Management Protocol Specification:</em></p> <ul><li>Machine message and measurement interfaces</li> <li>JSON based</li> <li>Versioned</li></ul> <p><em>Client:</em></p> <ul><li>Chrome / nw.js App</li> <li>For Industry Machines and Devices</li> <li>Node.js/Python client running on Raspberry Pi</li></ul> <p><em>Server:</em></p> <ul><li>(REST) Server including persistence and simple data visualization</li> <li>Multiple examples for different technologies</li></ul> <h1>
     Description
-  </h1> <p>Eclipse Unide provides a lightweight Production Performance Management Protocol (PPMP) server-client implementations (using JSON, REST and other). The core of the protocol are two interface definitions:</p> <ul><li>PPMP Measurement Interface: This is a public REST API with the purpose of receiving time series and machine data.</li> <li>PPMP Messages Interface: This is a public REST API with the purpose of receiving machine messages.</li></ul> <h1>
+  </h1> <p>Eclipse Unide provides a lightweight Production Performance Management Protocol (PPMP) server-client implementations (using JSON, REST and other). The core of the protocol are two interface definitions:</p> <ul><li>Production Performance Management Protocol Measurement Interface: This is a public REST API with the purpose of receiving time series and machine data.</li> <li>Production Performance Management Protocol Messages Interface: This is a public REST API with the purpose of receiving machine messages.</li></ul> <h1>
    Why Here?
-  </h1> <p>The PPMP extends the existing Eclipse IoT world by providing an easy and lightweight format for gathering data from industry sensors and machines, focusing on normalizing time series and alert messages. It can be transported by protocols like REST, AMQP, MQTT. As PPMP, these technologies do also not require complex and expensive middleware nor do their systems cause additional license fees. Eclipse is an excellent platform for developing PPMP sample implementations and evolving the format hands-on with the community. In fact, it could even join forces with existing Eclipse IoT projects like <a href="https://projects.eclipse.org/projects/iot.hono" target="_blank" rel="external">Hono</a>, <a href="https://www.eclipse.org/paho/" target="_blank" rel="external">Paho</a> or <a href="https://www.eclipse.org/kura/" target="_blank" rel="external">Kura</a>.</p> <h1>Interested Parties</h1> <ul><li><a href="https://www.contact-software.com" target="_blank" rel="external">CONTACT Software GmbH</a></li> <li><a href="http://www.balluff.com/" target="_blank" rel="external">Balluff GmbH</a></li> <li><a href="http://sap.com/" target="_blank" rel="external">SAP</a>, Industry Standards & Open Source</li> <li><a href="http://www.tcs.com/" target="_blank" rel="external">Tata Consultancy Services</a>, Internet of Things Group</li> <li><a href="http://www.3ds.com/" target="_blank" rel="external">Dassault Systèmes</a></li> <li><a href="http://www.cadis-engineering.de/" target="_blank" rel="external">CADIS Service GmbH</a></li> <li><a href="http://www.egt.de/" target="_blank" rel="external">EGT AG</a></li> <li><a href="http://www.klw.com/" target="_blank" rel="external">KLW Karl Lutz GmbH</a></li> <li><a href="http://www.rampf-gruppe.de/" target="_blank" rel="external">RAMPF Machine Systems GmbH & Co. KG</a></li> <li><a href="http://www.schmalz.com/" target="_blank" rel="external">J. Schmalz GmbH</a></li> <li><a href="https://www.bosch-si.com/" target="_blank" rel="external">Bosch Software Innovations GmbH</a></li></ul></div> <div class="sidebar column is-3 is-offset-1"><div class="recentPosts"><h4 class="subtitle is-5">
+  </h1> <p>The Production Performance Management Protocol extends the existing Eclipse IoT world by providing an easy and lightweight format for gathering data from industry sensors and machines, focusing on normalizing time series and alert messages. It can be transported by protocols like REST, AMQP, MQTT. As the Production Performance Management Protocol, these technologies do also not require complex and expensive middleware nor do their systems cause additional license fees. Eclipse is an excellent platform for developing Production Performance Management Protocol sample implementations and evolving the format hands-on with the community. In fact, it could even join forces with existing Eclipse IoT projects like <a href="https://projects.eclipse.org/projects/iot.hono" target="_blank" rel="external">Hono</a>, <a href="https://www.eclipse.org/paho/" target="_blank" rel="external">Paho</a> or <a href="https://www.eclipse.org/kura/" target="_blank" rel="external">Kura</a>.</p> <h1>Interested Parties</h1> <ul><li><a href="https://www.contact-software.com" target="_blank" rel="external">CONTACT Software GmbH</a></li> <li><a href="http://www.balluff.com/" target="_blank" rel="external">Balluff GmbH</a></li> <li><a href="http://sap.com/" target="_blank" rel="external">SAP</a>, Industry Standards & Open Source</li> <li><a href="http://www.tcs.com/" target="_blank" rel="external">Tata Consultancy Services</a>, Internet of Things Group</li> <li><a href="http://www.3ds.com/" target="_blank" rel="external">Dassault Systèmes</a></li> <li><a href="http://www.cadis-engineering.de/" target="_blank" rel="external">CADIS Service GmbH</a></li> <li><a href="http://www.egt.de/" target="_blank" rel="external">EGT AG</a></li> <li><a href="http://www.klw.com/" target="_blank" rel="external">KLW Karl Lutz GmbH</a></li> <li><a href="http://www.rampf-gruppe.de/" target="_blank" rel="external">RAMPF Machine Systems GmbH & Co. KG</a></li> <li><a href="http://www.schmalz.com/" target="_blank" rel="external">J. Schmalz GmbH</a></li> <li><a href="https://www.bosch-si.com/" target="_blank" rel="external">Bosch Software Innovations GmbH</a></li></ul></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/2019/11/26/Version-3-final">
-        PPMP Version 3 final
+        Protocol v3 final
       </a></li><li><a href="/unide/blog/2019/3/1/Version-3">
-        PPMP Version 3 release candidate
+        Protocol Version 3 release candidate
       </a></li><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
-        PPMP Use Cases: Template for PPMP transformation
+        Use Cases: Template for transformation
       </a></li><li><a href="/unide/blog/2018/3/26/Release-0.2.0">
         Unide 0.2.0 released
       </a></li><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
-        PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
+        Use Cases: Unide and the Eclipse Testbed
       </a></li></ul></div> <div class="blogArchives"><h4 class="subtitle is-5">
     Blog Archives
   </h4> <ul><li><a href="/unide/blog/2019/11">
@@ -78,6 +78,6 @@
         October 2016
       </a>
       (4)
-    </li></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>window.__NUXT__={layout:"sidebar",data:[{}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/a5b69b3e468a14b1e81c.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+    </li></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>window.__NUXT__={layout:"sidebar",data:[{}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/0965add99e93e40b8e8f.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/specification/index.html b/specification/index.html
index 846f263..823d08e 100644
--- a/specification/index.html
+++ b/specification/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Specification</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css">
+    <title data-n-head="true">Eclipse unide - Specification</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -14,8 +14,8 @@
       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="specification"><div class="content"><h1><a id="PPMP-Specification" title="PPMP Specification"></a>
-        PPMP Specification
+    </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="specification"><div class="content"><h1><a id="PPMP-Specification" title="Production Performance Management Protocol Specification"></a>
+        Production Performance Management Protocol Specification
       </h1> <h2>Rationale</h2> <p>
       Noticeably in recent years, there is a continuous increase in demand, price pressure and complexity in manufacturing. Things need to move faster, be more flexible, and fulfill higher quality standards forcing manufacturers to optimize their processes.
       </p> <p>
@@ -29,7 +29,7 @@
       </p> <p>
       The default way of transporting the json payload is via http to allow for an easy integration into various backend systems. Other transportation methods are possible and welcome.
       </p> <h2>Validation</h2> <p>
-        Did you know that you can easily validate your PPMP payload against the published online version of PPMP? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the PPMP specification as a <code>$ref</code> in the schema. For example:
+        Did you know that you can easily validate your Production Performance Management Protocol payload against the published online version of the Production Performance Management Protocol? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the Production Performance Management Protocol specification as a <code>$ref</code> in the schema. For example:
         <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
   <span class="token property">"$ref"</span><span class="token operator">:</span> <span class="token string">"https://raw.githubusercontent.com/eclipse/unide/master/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json"</span>
 <span class="token punctuation">}</span></code></pre></p></div> <div id="messageDetail" class="columns"><div class="column"><a href="/unide/specification#messageDetail">
@@ -73,11 +73,11 @@
       </div></div> <div class="content"><h1><a href="#Communicating-Parties" title="Communicating Parties"></a>
     Communicating Parties
   </h1> <p>
-  Two parties are involved in a PPMP message exchange: the sender and the receiver. The sender pushes a message to the receiver. Usually the sender is a machine or a sensor of a machine.
+  Two parties are involved in a Production Performance Management Protocol message exchange: the sender and the receiver. The sender pushes a message to the receiver. Usually the sender is a machine or a sensor of a machine.
   </p> <p>
   The receiver waits for messages. It offers a API that allows for sending either measurement payloads or message payloads.
   </p> <p>
   The communication is unidirectional. Only the sender can contact the receiver and send messages. No feedback from receiver to sender is provided.
-  </p> <img src="images/collaborators_v2.svg" alt="Overview PPMP" title="Overview PPMP" class="is-centered"></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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/5572a70754dbaa365e55.js" defer></script><script src="/unide/files/3bd3bd5c3610dfbadcf7.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+  </p> <img src="images/collaborators_v2.svg" alt="Overview Production Performance Management Protocol" title="Overview Production Performance Management Protocol" class="is-centered"></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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/08afffd6ed19d05d9d58.js" defer></script><script src="/unide/files/b0abdd2efe35cea7e6f8.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/specification/machine-message/index.html b/specification/machine-message/index.html
index c1e0ad4..7842304 100644
--- a/specification/machine-message/index.html
+++ b/specification/machine-message/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Specification for machine messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/a2e27af4b290334c2591.css">
+    <title data-n-head="true">Eclipse unide - Specification for machine messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/3eb6ece015ac272cf6b8.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -14,8 +14,8 @@
       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="specification"><div class="content"><h1><a id="PPMP-Specification" title="PPMP Specification"></a>
-        PPMP Specification
+    </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="specification"><div class="content"><h1><a id="PPMP-Specification" title="Production Performance Management Protocol Specification"></a>
+        Production Performance Management Protocol Specification
       </h1> <h2>Rationale</h2> <p>
       Noticeably in recent years, there is a continuous increase in demand, price pressure and complexity in manufacturing. Things need to move faster, be more flexible, and fulfill higher quality standards forcing manufacturers to optimize their processes.
       </p> <p>
@@ -29,7 +29,7 @@
       </p> <p>
       The default way of transporting the json payload is via http to allow for an easy integration into various backend systems. Other transportation methods are possible and welcome.
       </p> <h2>Validation</h2> <p>
-        Did you know that you can easily validate your PPMP payload against the published online version of PPMP? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the PPMP specification as a <code>$ref</code> in the schema. For example:
+        Did you know that you can easily validate your Production Performance Management Protocol payload against the published online version of the Production Performance Management Protocol? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the Production Performance Management Protocol specification as a <code>$ref</code> in the schema. For example:
         <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
   <span class="token property">"$ref"</span><span class="token operator">:</span> <span class="token string">"https://raw.githubusercontent.com/eclipse/unide/master/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json"</span>
 <span class="token punctuation">}</span></code></pre></p></div> <div id="messageDetail" class="columns"><div class="column"><a href="/unide/specification#messageDetail">
@@ -81,7 +81,7 @@
   <span class="token punctuation">}</span><span class="token punctuation">,</span>
   <span class="token property">"messages"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
     <span class="token punctuation">{</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.549Z"</span><span class="token punctuation">,</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:43.079Z"</span><span class="token punctuation">,</span>
       <span class="token property">"code"</span><span class="token operator">:</span> <span class="token string">"190ABT"</span>
     <span class="token punctuation">}</span>
   <span class="token punctuation">]</span>
@@ -108,7 +108,7 @@
       <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"DEVICE"</span><span class="token punctuation">,</span>
       <span class="token property">"state"</span><span class="token operator">:</span> <span class="token string">"NEW"</span><span class="token punctuation">,</span>
       <span class="token property">"title"</span><span class="token operator">:</span> <span class="token string">"control board damaged"</span><span class="token punctuation">,</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.549Z"</span><span class="token punctuation">,</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:43.079Z"</span><span class="token punctuation">,</span>
       <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"WARNING"</span><span class="token punctuation">,</span>
       <span class="token property">"additionalData"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
         <span class="token property">"firmware"</span><span class="token operator">:</span> <span class="token string">"20130304_22.020"</span>
@@ -120,11 +120,11 @@
       <span class="token property">"severity"</span><span class="token operator">:</span> <span class="token string">"HIGH"</span><span class="token punctuation">,</span>
       <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"TECHNICAL_INFO"</span><span class="token punctuation">,</span>
       <span class="token property">"title"</span><span class="token operator">:</span> <span class="token string">"Disk size limit reached"</span><span class="token punctuation">,</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.649Z"</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:43.179Z"</span>
     <span class="token punctuation">}</span>
   <span class="token punctuation">]</span>
 <span class="token punctuation">}</span></code></pre></div></div></div></div> <h1><a id="v3/message-schema-detail" title="v3/message Fields definition"></a>
     Fields definition
-  </h1> </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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/5572a70754dbaa365e55.js" defer></script><script src="/unide/files/b31d3354e22c4e6855e0.js" defer></script><script src="/unide/files/de162ef814559a2126c1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+  </h1> </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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/08afffd6ed19d05d9d58.js" defer></script><script src="/unide/files/4891cfeb702e0143e870.js" defer></script><script src="/unide/files/42ea76d2884ad7b86a73.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/specification/measurement-message/index.html b/specification/measurement-message/index.html
index a2abd8b..5c2b6fb 100644
--- a/specification/measurement-message/index.html
+++ b/specification/measurement-message/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Specification for measurement messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/a2e27af4b290334c2591.css">
+    <title data-n-head="true">Eclipse unide - Specification for measurement messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/3eb6ece015ac272cf6b8.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -14,8 +14,8 @@
       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="specification"><div class="content"><h1><a id="PPMP-Specification" title="PPMP Specification"></a>
-        PPMP Specification
+    </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="specification"><div class="content"><h1><a id="PPMP-Specification" title="Production Performance Management Protocol Specification"></a>
+        Production Performance Management Protocol Specification
       </h1> <h2>Rationale</h2> <p>
       Noticeably in recent years, there is a continuous increase in demand, price pressure and complexity in manufacturing. Things need to move faster, be more flexible, and fulfill higher quality standards forcing manufacturers to optimize their processes.
       </p> <p>
@@ -29,7 +29,7 @@
       </p> <p>
       The default way of transporting the json payload is via http to allow for an easy integration into various backend systems. Other transportation methods are possible and welcome.
       </p> <h2>Validation</h2> <p>
-        Did you know that you can easily validate your PPMP payload against the published online version of PPMP? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the PPMP specification as a <code>$ref</code> in the schema. For example:
+        Did you know that you can easily validate your Production Performance Management Protocol payload against the published online version of the Production Performance Management Protocol? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the Production Performance Management Protocol specification as a <code>$ref</code> in the schema. For example:
         <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
   <span class="token property">"$ref"</span><span class="token operator">:</span> <span class="token string">"https://raw.githubusercontent.com/eclipse/unide/master/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json"</span>
 <span class="token punctuation">}</span></code></pre></p></div> <div id="messageDetail" class="columns"><div class="column"><a href="/unide/specification#messageDetail">
@@ -81,7 +81,7 @@
   <span class="token punctuation">}</span><span class="token punctuation">,</span>
   <span class="token property">"measurements"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
     <span class="token punctuation">{</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.558Z"</span><span class="token punctuation">,</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:43.117Z"</span><span class="token punctuation">,</span>
       <span class="token property">"series"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
         <span class="token property">"time"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
           <span class="token number">0</span><span class="token punctuation">,</span>
@@ -157,7 +157,7 @@
           <span class="token number">4.2432</span>
         <span class="token punctuation">]</span>
       <span class="token punctuation">}</span><span class="token punctuation">,</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.558Z"</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:43.117Z"</span>
     <span class="token punctuation">}</span><span class="token punctuation">,</span>
     <span class="token punctuation">{</span>
       <span class="token property">"context"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
@@ -182,11 +182,11 @@
           <span class="token string">"Y2hlZXNlCg=="</span>
         <span class="token punctuation">]</span>
       <span class="token punctuation">}</span><span class="token punctuation">,</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:08.558Z"</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:38.117Z"</span>
     <span class="token punctuation">}</span>
   <span class="token punctuation">]</span>
 <span class="token punctuation">}</span></code></pre></div></div></div></div> <h1><a id="v3/measurement-schema-detail" title="v3/measurement Fields definition"></a>
     Fields definition
-  </h1> </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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/5572a70754dbaa365e55.js" defer></script><script src="/unide/files/ba289679d90095018de3.js" defer></script><script src="/unide/files/de162ef814559a2126c1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+  </h1> </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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/08afffd6ed19d05d9d58.js" defer></script><script src="/unide/files/56b18d727e8153033d26.js" defer></script><script src="/unide/files/42ea76d2884ad7b86a73.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/specification/process-message/index.html b/specification/process-message/index.html
index a111bc1..262149f 100644
--- a/specification/process-message/index.html
+++ b/specification/process-message/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Specification for process messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/a2e27af4b290334c2591.css">
+    <title data-n-head="true">Eclipse unide - Specification for process messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/3eb6ece015ac272cf6b8.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -14,8 +14,8 @@
       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="specification"><div class="content"><h1><a id="PPMP-Specification" title="PPMP Specification"></a>
-        PPMP Specification
+    </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="specification"><div class="content"><h1><a id="PPMP-Specification" title="Production Performance Management Protocol Specification"></a>
+        Production Performance Management Protocol Specification
       </h1> <h2>Rationale</h2> <p>
       Noticeably in recent years, there is a continuous increase in demand, price pressure and complexity in manufacturing. Things need to move faster, be more flexible, and fulfill higher quality standards forcing manufacturers to optimize their processes.
       </p> <p>
@@ -29,7 +29,7 @@
       </p> <p>
       The default way of transporting the json payload is via http to allow for an easy integration into various backend systems. Other transportation methods are possible and welcome.
       </p> <h2>Validation</h2> <p>
-        Did you know that you can easily validate your PPMP payload against the published online version of PPMP? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the PPMP specification as a <code>$ref</code> in the schema. For example:
+        Did you know that you can easily validate your Production Performance Management Protocol payload against the published online version of the Production Performance Management Protocol? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the Production Performance Management Protocol specification as a <code>$ref</code> in the schema. For example:
         <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
   <span class="token property">"$ref"</span><span class="token operator">:</span> <span class="token string">"https://raw.githubusercontent.com/eclipse/unide/master/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json"</span>
 <span class="token punctuation">}</span></code></pre></p></div> <div id="messageDetail" class="columns"><div class="column"><a href="/unide/specification#messageDetail">
@@ -80,11 +80,11 @@
     <span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"a4927dad-58d4-4580-b460-79cefd56775b"</span>
   <span class="token punctuation">}</span><span class="token punctuation">,</span>
   <span class="token property">"process"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
-    <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.573Z"</span>
+    <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:43.160Z"</span>
   <span class="token punctuation">}</span><span class="token punctuation">,</span>
   <span class="token property">"measurements"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
     <span class="token punctuation">{</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.673Z"</span><span class="token punctuation">,</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:43.260Z"</span><span class="token punctuation">,</span>
       <span class="token property">"series"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
         <span class="token property">"time"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
           <span class="token number">0</span><span class="token punctuation">,</span>
@@ -135,7 +135,7 @@
       <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"Programm 1"</span>
     <span class="token punctuation">}</span><span class="token punctuation">,</span>
     <span class="token property">"result"</span><span class="token operator">:</span> <span class="token string">"NOK"</span><span class="token punctuation">,</span>
-    <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.573Z"</span><span class="token punctuation">,</span>
+    <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:43.160Z"</span><span class="token punctuation">,</span>
     <span class="token property">"additionalData"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
       <span class="token property">"escalation"</span><span class="token operator">:</span> <span class="token string">"shift leader"</span><span class="token punctuation">,</span>
       <span class="token property">"maxDuration"</span><span class="token operator">:</span> <span class="token string">"30min"</span><span class="token punctuation">,</span>
@@ -237,7 +237,7 @@
           <span class="token punctuation">}</span>
         <span class="token punctuation">}</span>
       <span class="token punctuation">]</span><span class="token punctuation">,</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.673Z"</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:43.260Z"</span>
     <span class="token punctuation">}</span><span class="token punctuation">,</span>
     <span class="token punctuation">{</span>
       <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"processing"</span><span class="token punctuation">,</span>
@@ -255,11 +255,11 @@
           <span class="token number">50</span>
         <span class="token punctuation">]</span>
       <span class="token punctuation">}</span><span class="token punctuation">,</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:14.003Z"</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:43.590Z"</span>
     <span class="token punctuation">}</span>
   <span class="token punctuation">]</span>
 <span class="token punctuation">}</span></code></pre></div></div></div></div> <h1><a id="v3/process-schema-detail" title="v3/process Fields definition"></a>
     Fields definition
-  </h1> </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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/5572a70754dbaa365e55.js" defer></script><script src="/unide/files/9e2d6fa9e75e3f9efd77.js" defer></script><script src="/unide/files/de162ef814559a2126c1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+  </h1> </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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/08afffd6ed19d05d9d58.js" defer></script><script src="/unide/files/e915e0c530b16a314b13.js" defer></script><script src="/unide/files/42ea76d2884ad7b86a73.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/specification/v2/machine-message/index.html b/specification/v2/machine-message/index.html
index 697eeb5..8784b7e 100644
--- a/specification/v2/machine-message/index.html
+++ b/specification/v2/machine-message/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Specification for machine messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/a2e27af4b290334c2591.css">
+    <title data-n-head="true">Eclipse unide - Specification for machine messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/3eb6ece015ac272cf6b8.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -14,8 +14,8 @@
       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="specification"><div class="content"><h1><a id="PPMP-Specification" title="PPMP Specification"></a>
-        PPMP Specification
+    </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="specification"><div class="content"><h1><a id="PPMP-Specification" title="Production Performance Management Protocol Specification"></a>
+        Production Performance Management Protocol Specification
       </h1> <h2>Rationale</h2> <p>
       Noticeably in recent years, there is a continuous increase in demand, price pressure and complexity in manufacturing. Things need to move faster, be more flexible, and fulfill higher quality standards forcing manufacturers to optimize their processes.
       </p> <p>
@@ -29,7 +29,7 @@
       </p> <p>
       The default way of transporting the json payload is via http to allow for an easy integration into various backend systems. Other transportation methods are possible and welcome.
       </p> <h2>Validation</h2> <p>
-        Did you know that you can easily validate your PPMP payload against the published online version of PPMP? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the PPMP specification as a <code>$ref</code> in the schema. For example:
+        Did you know that you can easily validate your Production Performance Management Protocol payload against the published online version of the Production Performance Management Protocol? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the Production Performance Management Protocol specification as a <code>$ref</code> in the schema. For example:
         <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
   <span class="token property">"$ref"</span><span class="token operator">:</span> <span class="token string">"https://raw.githubusercontent.com/eclipse/unide/master/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json"</span>
 <span class="token punctuation">}</span></code></pre></p></div> <div id="messageDetail" class="columns"><div class="column"><a href="/unide/specification#messageDetail">
@@ -81,7 +81,7 @@
   <span class="token punctuation">}</span><span class="token punctuation">,</span>
   <span class="token property">"messages"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
     <span class="token punctuation">{</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.422Z"</span><span class="token punctuation">,</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:42.737Z"</span><span class="token punctuation">,</span>
       <span class="token property">"code"</span><span class="token operator">:</span> <span class="token string">"190ABT"</span>
     <span class="token punctuation">}</span>
   <span class="token punctuation">]</span>
@@ -100,7 +100,7 @@
   <span class="token property">"messages"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
     <span class="token punctuation">{</span>
       <span class="token property">"origin"</span><span class="token operator">:</span> <span class="token string">"sensor-id-992.2393.22"</span><span class="token punctuation">,</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.422Z"</span><span class="token punctuation">,</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:42.737Z"</span><span class="token punctuation">,</span>
       <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"DEVICE"</span><span class="token punctuation">,</span>
       <span class="token property">"severity"</span><span class="token operator">:</span> <span class="token string">"HIGH"</span><span class="token punctuation">,</span>
       <span class="token property">"code"</span><span class="token operator">:</span> <span class="token string">"190ABT"</span><span class="token punctuation">,</span>
@@ -112,7 +112,7 @@
       <span class="token punctuation">}</span>
     <span class="token punctuation">}</span><span class="token punctuation">,</span>
     <span class="token punctuation">{</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.522Z"</span><span class="token punctuation">,</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:42.837Z"</span><span class="token punctuation">,</span>
       <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"TECHNICAL_INFO"</span><span class="token punctuation">,</span>
       <span class="token property">"severity"</span><span class="token operator">:</span> <span class="token string">"HIGH"</span><span class="token punctuation">,</span>
       <span class="token property">"code"</span><span class="token operator">:</span> <span class="token string">"33-02"</span><span class="token punctuation">,</span>
@@ -122,6 +122,6 @@
   <span class="token punctuation">]</span>
 <span class="token punctuation">}</span></code></pre></div></div></div></div> <h1><a id="v2/message-schema-detail" title="v2/message Fields definition"></a>
     Fields definition
-  </h1> </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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/5572a70754dbaa365e55.js" defer></script><script src="/unide/files/f86c19a025da8965dcb8.js" defer></script><script src="/unide/files/de162ef814559a2126c1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+  </h1> </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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/08afffd6ed19d05d9d58.js" defer></script><script src="/unide/files/9d2a6552d4d20b0139b1.js" defer></script><script src="/unide/files/42ea76d2884ad7b86a73.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/specification/v2/measurement-message/index.html b/specification/v2/measurement-message/index.html
index 4a0e671..4dc0bd7 100644
--- a/specification/v2/measurement-message/index.html
+++ b/specification/v2/measurement-message/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Specification for measurement messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/a2e27af4b290334c2591.css">
+    <title data-n-head="true">Eclipse unide - Specification for measurement messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/3eb6ece015ac272cf6b8.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -14,8 +14,8 @@
       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="specification"><div class="content"><h1><a id="PPMP-Specification" title="PPMP Specification"></a>
-        PPMP Specification
+    </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="specification"><div class="content"><h1><a id="PPMP-Specification" title="Production Performance Management Protocol Specification"></a>
+        Production Performance Management Protocol Specification
       </h1> <h2>Rationale</h2> <p>
       Noticeably in recent years, there is a continuous increase in demand, price pressure and complexity in manufacturing. Things need to move faster, be more flexible, and fulfill higher quality standards forcing manufacturers to optimize their processes.
       </p> <p>
@@ -29,7 +29,7 @@
       </p> <p>
       The default way of transporting the json payload is via http to allow for an easy integration into various backend systems. Other transportation methods are possible and welcome.
       </p> <h2>Validation</h2> <p>
-        Did you know that you can easily validate your PPMP payload against the published online version of PPMP? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the PPMP specification as a <code>$ref</code> in the schema. For example:
+        Did you know that you can easily validate your Production Performance Management Protocol payload against the published online version of the Production Performance Management Protocol? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the Production Performance Management Protocol specification as a <code>$ref</code> in the schema. For example:
         <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
   <span class="token property">"$ref"</span><span class="token operator">:</span> <span class="token string">"https://raw.githubusercontent.com/eclipse/unide/master/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json"</span>
 <span class="token punctuation">}</span></code></pre></p></div> <div id="messageDetail" class="columns"><div class="column"><a href="/unide/specification#messageDetail">
@@ -81,7 +81,7 @@
   <span class="token punctuation">}</span><span class="token punctuation">,</span>
   <span class="token property">"measurements"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
     <span class="token punctuation">{</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.446Z"</span><span class="token punctuation">,</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:42.805Z"</span><span class="token punctuation">,</span>
       <span class="token property">"series"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
         <span class="token property">"$_time"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
           <span class="token number">0</span><span class="token punctuation">,</span>
@@ -120,7 +120,7 @@
   <span class="token punctuation">}</span><span class="token punctuation">,</span>
   <span class="token property">"measurements"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
     <span class="token punctuation">{</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.446Z"</span><span class="token punctuation">,</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:42.805Z"</span><span class="token punctuation">,</span>
       <span class="token property">"code"</span><span class="token operator">:</span> <span class="token string">"190ABT"</span><span class="token punctuation">,</span>
       <span class="token property">"result"</span><span class="token operator">:</span> <span class="token string">"OK"</span><span class="token punctuation">,</span>
       <span class="token property">"series"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
@@ -145,7 +145,7 @@
       <span class="token punctuation">}</span>
     <span class="token punctuation">}</span><span class="token punctuation">,</span>
     <span class="token punctuation">{</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:08.446Z"</span><span class="token punctuation">,</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:37.805Z"</span><span class="token punctuation">,</span>
       <span class="token property">"series"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
         <span class="token property">"$_time"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
           <span class="token number">0</span><span class="token punctuation">,</span>
@@ -162,6 +162,6 @@
   <span class="token punctuation">]</span>
 <span class="token punctuation">}</span></code></pre></div></div></div></div> <h1><a id="v2/measurement-schema-detail" title="v2/measurement Fields definition"></a>
     Fields definition
-  </h1> </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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/5572a70754dbaa365e55.js" defer></script><script src="/unide/files/5d7aa3d4daa5e74bc8bd.js" defer></script><script src="/unide/files/de162ef814559a2126c1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+  </h1> </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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/08afffd6ed19d05d9d58.js" defer></script><script src="/unide/files/96a16b4ea8ad044695c6.js" defer></script><script src="/unide/files/42ea76d2884ad7b86a73.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/specification/v2/process-message/index.html b/specification/v2/process-message/index.html
index 3102c68..3234250 100644
--- a/specification/v2/process-message/index.html
+++ b/specification/v2/process-message/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Specification for process messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/a2e27af4b290334c2591.css">
+    <title data-n-head="true">Eclipse unide - Specification for process messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/3eb6ece015ac272cf6b8.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -14,8 +14,8 @@
       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="specification"><div class="content"><h1><a id="PPMP-Specification" title="PPMP Specification"></a>
-        PPMP Specification
+    </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="specification"><div class="content"><h1><a id="PPMP-Specification" title="Production Performance Management Protocol Specification"></a>
+        Production Performance Management Protocol Specification
       </h1> <h2>Rationale</h2> <p>
       Noticeably in recent years, there is a continuous increase in demand, price pressure and complexity in manufacturing. Things need to move faster, be more flexible, and fulfill higher quality standards forcing manufacturers to optimize their processes.
       </p> <p>
@@ -29,7 +29,7 @@
       </p> <p>
       The default way of transporting the json payload is via http to allow for an easy integration into various backend systems. Other transportation methods are possible and welcome.
       </p> <h2>Validation</h2> <p>
-        Did you know that you can easily validate your PPMP payload against the published online version of PPMP? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the PPMP specification as a <code>$ref</code> in the schema. For example:
+        Did you know that you can easily validate your Production Performance Management Protocol payload against the published online version of the Production Performance Management Protocol? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the Production Performance Management Protocol specification as a <code>$ref</code> in the schema. For example:
         <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
   <span class="token property">"$ref"</span><span class="token operator">:</span> <span class="token string">"https://raw.githubusercontent.com/eclipse/unide/master/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json"</span>
 <span class="token punctuation">}</span></code></pre></p></div> <div id="messageDetail" class="columns"><div class="column"><a href="/unide/specification#messageDetail">
@@ -80,11 +80,11 @@
     <span class="token property">"deviceID"</span><span class="token operator">:</span> <span class="token string">"a4927dad-58d4-4580-b460-79cefd56775b"</span>
   <span class="token punctuation">}</span><span class="token punctuation">,</span>
   <span class="token property">"process"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
-    <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.473Z"</span>
+    <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:42.843Z"</span>
   <span class="token punctuation">}</span><span class="token punctuation">,</span>
   <span class="token property">"measurements"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
     <span class="token punctuation">{</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.573Z"</span><span class="token punctuation">,</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:42.943Z"</span><span class="token punctuation">,</span>
       <span class="token property">"series"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
         <span class="token property">"force"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
           <span class="token number">26</span><span class="token punctuation">,</span>
@@ -123,7 +123,7 @@
   <span class="token punctuation">}</span><span class="token punctuation">,</span>
   <span class="token property">"process"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
     <span class="token property">"externalProcessId"</span><span class="token operator">:</span> <span class="token string">"b4927dad-58d4-4580-b460-79cefd56775b"</span><span class="token punctuation">,</span>
-    <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.473Z"</span><span class="token punctuation">,</span>
+    <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:42.843Z"</span><span class="token punctuation">,</span>
     <span class="token property">"result"</span><span class="token operator">:</span> <span class="token string">"NOK"</span><span class="token punctuation">,</span>
     <span class="token property">"shutoffPhase"</span><span class="token operator">:</span> <span class="token string">"phase 2"</span><span class="token punctuation">,</span>
     <span class="token property">"program"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
@@ -133,7 +133,7 @@
     <span class="token punctuation">}</span><span class="token punctuation">,</span>
     <span class="token property">"shutoffValues"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
       <span class="token property">"force"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
-        <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:23.473Z"</span><span class="token punctuation">,</span>
+        <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:52.843Z"</span><span class="token punctuation">,</span>
         <span class="token property">"value"</span><span class="token operator">:</span> <span class="token number">24</span><span class="token punctuation">,</span>
         <span class="token property">"upperError"</span><span class="token operator">:</span> <span class="token number">26</span><span class="token punctuation">,</span>
         <span class="token property">"lowerError"</span><span class="token operator">:</span> <span class="token number">22</span><span class="token punctuation">,</span>
@@ -154,7 +154,7 @@
   <span class="token punctuation">}</span><span class="token punctuation">,</span>
   <span class="token property">"measurements"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
     <span class="token punctuation">{</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.573Z"</span><span class="token punctuation">,</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:42.943Z"</span><span class="token punctuation">,</span>
       <span class="token property">"phase"</span><span class="token operator">:</span> <span class="token string">"phase 1"</span><span class="token punctuation">,</span>
       <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"heating up"</span><span class="token punctuation">,</span>
       <span class="token property">"result"</span><span class="token operator">:</span> <span class="token string">"OK"</span><span class="token punctuation">,</span>
@@ -214,7 +214,7 @@
       <span class="token punctuation">}</span>
     <span class="token punctuation">}</span><span class="token punctuation">,</span>
     <span class="token punctuation">{</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.903Z"</span><span class="token punctuation">,</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:43.273Z"</span><span class="token punctuation">,</span>
       <span class="token property">"phase"</span><span class="token operator">:</span> <span class="token string">"phase 2"</span><span class="token punctuation">,</span>
       <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"processing"</span><span class="token punctuation">,</span>
       <span class="token property">"result"</span><span class="token operator">:</span> <span class="token string">"OK"</span><span class="token punctuation">,</span>
@@ -234,6 +234,6 @@
   <span class="token punctuation">]</span>
 <span class="token punctuation">}</span></code></pre></div></div></div></div> <h1><a id="v2/process-schema-detail" title="v2/process Fields definition"></a>
     Fields definition
-  </h1> </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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/5572a70754dbaa365e55.js" defer></script><script src="/unide/files/502370205f0b3be987af.js" defer></script><script src="/unide/files/de162ef814559a2126c1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+  </h1> </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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/08afffd6ed19d05d9d58.js" defer></script><script src="/unide/files/09e057656ddeb65b6a85.js" defer></script><script src="/unide/files/42ea76d2884ad7b86a73.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/specification/v3/machine-message/index.html b/specification/v3/machine-message/index.html
index a7bf1c4..c6211ed 100644
--- a/specification/v3/machine-message/index.html
+++ b/specification/v3/machine-message/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Specification for machine messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/a2e27af4b290334c2591.css">
+    <title data-n-head="true">Eclipse unide - Specification for machine messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/3eb6ece015ac272cf6b8.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -14,8 +14,8 @@
       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="specification"><div class="content"><h1><a id="PPMP-Specification" title="PPMP Specification"></a>
-        PPMP Specification
+    </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="specification"><div class="content"><h1><a id="PPMP-Specification" title="Production Performance Management Protocol Specification"></a>
+        Production Performance Management Protocol Specification
       </h1> <h2>Rationale</h2> <p>
       Noticeably in recent years, there is a continuous increase in demand, price pressure and complexity in manufacturing. Things need to move faster, be more flexible, and fulfill higher quality standards forcing manufacturers to optimize their processes.
       </p> <p>
@@ -29,7 +29,7 @@
       </p> <p>
       The default way of transporting the json payload is via http to allow for an easy integration into various backend systems. Other transportation methods are possible and welcome.
       </p> <h2>Validation</h2> <p>
-        Did you know that you can easily validate your PPMP payload against the published online version of PPMP? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the PPMP specification as a <code>$ref</code> in the schema. For example:
+        Did you know that you can easily validate your Production Performance Management Protocol payload against the published online version of the Production Performance Management Protocol? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the Production Performance Management Protocol specification as a <code>$ref</code> in the schema. For example:
         <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
   <span class="token property">"$ref"</span><span class="token operator">:</span> <span class="token string">"https://raw.githubusercontent.com/eclipse/unide/master/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json"</span>
 <span class="token punctuation">}</span></code></pre></p></div> <div id="messageDetail" class="columns"><div class="column"><a href="/unide/specification#messageDetail">
@@ -81,7 +81,7 @@
   <span class="token punctuation">}</span><span class="token punctuation">,</span>
   <span class="token property">"messages"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
     <span class="token punctuation">{</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.492Z"</span><span class="token punctuation">,</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:42.921Z"</span><span class="token punctuation">,</span>
       <span class="token property">"code"</span><span class="token operator">:</span> <span class="token string">"190ABT"</span>
     <span class="token punctuation">}</span>
   <span class="token punctuation">]</span>
@@ -108,7 +108,7 @@
       <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"DEVICE"</span><span class="token punctuation">,</span>
       <span class="token property">"state"</span><span class="token operator">:</span> <span class="token string">"NEW"</span><span class="token punctuation">,</span>
       <span class="token property">"title"</span><span class="token operator">:</span> <span class="token string">"control board damaged"</span><span class="token punctuation">,</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.492Z"</span><span class="token punctuation">,</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:42.921Z"</span><span class="token punctuation">,</span>
       <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"WARNING"</span><span class="token punctuation">,</span>
       <span class="token property">"additionalData"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
         <span class="token property">"firmware"</span><span class="token operator">:</span> <span class="token string">"20130304_22.020"</span>
@@ -120,11 +120,11 @@
       <span class="token property">"severity"</span><span class="token operator">:</span> <span class="token string">"HIGH"</span><span class="token punctuation">,</span>
       <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"TECHNICAL_INFO"</span><span class="token punctuation">,</span>
       <span class="token property">"title"</span><span class="token operator">:</span> <span class="token string">"Disk size limit reached"</span><span class="token punctuation">,</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.592Z"</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:43.021Z"</span>
     <span class="token punctuation">}</span>
   <span class="token punctuation">]</span>
 <span class="token punctuation">}</span></code></pre></div></div></div></div> <h1><a id="v3/message-schema-detail" title="v3/message Fields definition"></a>
     Fields definition
-  </h1> </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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/5572a70754dbaa365e55.js" defer></script><script src="/unide/files/b31d3354e22c4e6855e0.js" defer></script><script src="/unide/files/de162ef814559a2126c1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+  </h1> </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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/08afffd6ed19d05d9d58.js" defer></script><script src="/unide/files/4891cfeb702e0143e870.js" defer></script><script src="/unide/files/42ea76d2884ad7b86a73.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/specification/v3/measurement-message/index.html b/specification/v3/measurement-message/index.html
index 463404a..e69c0c4 100644
--- a/specification/v3/measurement-message/index.html
+++ b/specification/v3/measurement-message/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Specification for measurement messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/a2e27af4b290334c2591.css">
+    <title data-n-head="true">Eclipse unide - Specification for measurement messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/3eb6ece015ac272cf6b8.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -14,8 +14,8 @@
       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="specification"><div class="content"><h1><a id="PPMP-Specification" title="PPMP Specification"></a>
-        PPMP Specification
+    </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="specification"><div class="content"><h1><a id="PPMP-Specification" title="Production Performance Management Protocol Specification"></a>
+        Production Performance Management Protocol Specification
       </h1> <h2>Rationale</h2> <p>
       Noticeably in recent years, there is a continuous increase in demand, price pressure and complexity in manufacturing. Things need to move faster, be more flexible, and fulfill higher quality standards forcing manufacturers to optimize their processes.
       </p> <p>
@@ -29,7 +29,7 @@
       </p> <p>
       The default way of transporting the json payload is via http to allow for an easy integration into various backend systems. Other transportation methods are possible and welcome.
       </p> <h2>Validation</h2> <p>
-        Did you know that you can easily validate your PPMP payload against the published online version of PPMP? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the PPMP specification as a <code>$ref</code> in the schema. For example:
+        Did you know that you can easily validate your Production Performance Management Protocol payload against the published online version of the Production Performance Management Protocol? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the Production Performance Management Protocol specification as a <code>$ref</code> in the schema. For example:
         <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
   <span class="token property">"$ref"</span><span class="token operator">:</span> <span class="token string">"https://raw.githubusercontent.com/eclipse/unide/master/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json"</span>
 <span class="token punctuation">}</span></code></pre></p></div> <div id="messageDetail" class="columns"><div class="column"><a href="/unide/specification#messageDetail">
@@ -81,7 +81,7 @@
   <span class="token punctuation">}</span><span class="token punctuation">,</span>
   <span class="token property">"measurements"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
     <span class="token punctuation">{</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.510Z"</span><span class="token punctuation">,</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:42.958Z"</span><span class="token punctuation">,</span>
       <span class="token property">"series"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
         <span class="token property">"time"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
           <span class="token number">0</span><span class="token punctuation">,</span>
@@ -157,7 +157,7 @@
           <span class="token number">4.2432</span>
         <span class="token punctuation">]</span>
       <span class="token punctuation">}</span><span class="token punctuation">,</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.510Z"</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:42.958Z"</span>
     <span class="token punctuation">}</span><span class="token punctuation">,</span>
     <span class="token punctuation">{</span>
       <span class="token property">"context"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
@@ -182,11 +182,11 @@
           <span class="token string">"Y2hlZXNlCg=="</span>
         <span class="token punctuation">]</span>
       <span class="token punctuation">}</span><span class="token punctuation">,</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:08.510Z"</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:37.958Z"</span>
     <span class="token punctuation">}</span>
   <span class="token punctuation">]</span>
 <span class="token punctuation">}</span></code></pre></div></div></div></div> <h1><a id="v3/measurement-schema-detail" title="v3/measurement Fields definition"></a>
     Fields definition
-  </h1> </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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/5572a70754dbaa365e55.js" defer></script><script src="/unide/files/ba289679d90095018de3.js" defer></script><script src="/unide/files/de162ef814559a2126c1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+  </h1> </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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/08afffd6ed19d05d9d58.js" defer></script><script src="/unide/files/56b18d727e8153033d26.js" defer></script><script src="/unide/files/42ea76d2884ad7b86a73.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>
diff --git a/specification/v3/process-message/index.html b/specification/v3/process-message/index.html
index 84ef384..5813fa7 100644
--- a/specification/v3/process-message/index.html
+++ b/specification/v3/process-message/index.html
@@ -1,7 +1,7 @@
 <!doctype html>
 <html data-n-head-ssr data-n-head="">
   <head data-n-head="">
-    <title data-n-head="true">Eclipse unide - Specification for process messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/1750fa95f99b26cdec14.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/a2e27af4b290334c2591.css">
+    <title data-n-head="true">Eclipse unide - Specification for process messages</title><meta data-n-head="true" charset="utf-8"><meta data-n-head="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="true" data-hid="description" name="description" content="Eclipse Unide: Understand Industry devices"><link data-n-head="true" rel="icon" type="image/x-icon" href="/unide/favicon.ico"><base href="/unide/"><link rel="stylesheet" href="/unide/files/aacbf5835f7143d93ae2.css"><link rel="stylesheet" href="/unide/files/a24872390d726b28f88d.css"><link rel="stylesheet" href="/unide/files/3eb6ece015ac272cf6b8.css">
   </head>
   <body data-n-head="">
     <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div id="navMenu" class="navbar-menu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
@@ -14,8 +14,8 @@
       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="specification"><div class="content"><h1><a id="PPMP-Specification" title="PPMP Specification"></a>
-        PPMP Specification
+    </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="specification"><div class="content"><h1><a id="PPMP-Specification" title="Production Performance Management Protocol Specification"></a>
+        Production Performance Management Protocol Specification
       </h1> <h2>Rationale</h2> <p>
       Noticeably in recent years, there is a continuous increase in demand, price pressure and complexity in manufacturing. Things need to move faster, be more flexible, and fulfill higher quality standards forcing manufacturers to optimize their processes.
       </p> <p>
@@ -29,7 +29,7 @@
       </p> <p>
       The default way of transporting the json payload is via http to allow for an easy integration into various backend systems. Other transportation methods are possible and welcome.
       </p> <h2>Validation</h2> <p>
-        Did you know that you can easily validate your PPMP payload against the published online version of PPMP? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the PPMP specification as a <code>$ref</code> in the schema. For example:
+        Did you know that you can easily validate your Production Performance Management Protocol payload against the published online version of the Production Performance Management Protocol? For exapmle, <a href="https://www.jsonschemavalidator.net">jsonschemavalidator.net</a> provides an online validation frontend. Just use your payload as JSON input and the respective github link to the Production Performance Management Protocol specification as a <code>$ref</code> in the schema. For example:
         <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
   <span class="token property">"$ref"</span><span class="token operator">:</span> <span class="token string">"https://raw.githubusercontent.com/eclipse/unide/master/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json"</span>
 <span class="token punctuation">}</span></code></pre></p></div> <div id="messageDetail" class="columns"><div class="column"><a href="/unide/specification#messageDetail">
@@ -80,11 +80,11 @@
     <span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"a4927dad-58d4-4580-b460-79cefd56775b"</span>
   <span class="token punctuation">}</span><span class="token punctuation">,</span>
   <span class="token property">"process"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
-    <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.523Z"</span>
+    <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:43.015Z"</span>
   <span class="token punctuation">}</span><span class="token punctuation">,</span>
   <span class="token property">"measurements"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
     <span class="token punctuation">{</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.623Z"</span><span class="token punctuation">,</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:43.115Z"</span><span class="token punctuation">,</span>
       <span class="token property">"series"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
         <span class="token property">"time"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
           <span class="token number">0</span><span class="token punctuation">,</span>
@@ -135,7 +135,7 @@
       <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"Programm 1"</span>
     <span class="token punctuation">}</span><span class="token punctuation">,</span>
     <span class="token property">"result"</span><span class="token operator">:</span> <span class="token string">"NOK"</span><span class="token punctuation">,</span>
-    <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.523Z"</span><span class="token punctuation">,</span>
+    <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:43.015Z"</span><span class="token punctuation">,</span>
     <span class="token property">"additionalData"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
       <span class="token property">"escalation"</span><span class="token operator">:</span> <span class="token string">"shift leader"</span><span class="token punctuation">,</span>
       <span class="token property">"maxDuration"</span><span class="token operator">:</span> <span class="token string">"30min"</span><span class="token punctuation">,</span>
@@ -237,7 +237,7 @@
           <span class="token punctuation">}</span>
         <span class="token punctuation">}</span>
       <span class="token punctuation">]</span><span class="token punctuation">,</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.623Z"</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:43.115Z"</span>
     <span class="token punctuation">}</span><span class="token punctuation">,</span>
     <span class="token punctuation">{</span>
       <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"processing"</span><span class="token punctuation">,</span>
@@ -255,11 +255,11 @@
           <span class="token number">50</span>
         <span class="token punctuation">]</span>
       <span class="token punctuation">}</span><span class="token punctuation">,</span>
-      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2019-11-29T08:24:13.953Z"</span>
+      <span class="token property">"ts"</span><span class="token operator">:</span> <span class="token string">"2020-06-25T15:16:43.445Z"</span>
     <span class="token punctuation">}</span>
   <span class="token punctuation">]</span>
 <span class="token punctuation">}</span></code></pre></div></div></div></div> <h1><a id="v3/process-schema-detail" title="v3/process Fields definition"></a>
     Fields definition
-  </h1> </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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/14bc2d8913e01b8f6783.js" defer></script><script src="/unide/files/5572a70754dbaa365e55.js" defer></script><script src="/unide/files/9e2d6fa9e75e3f9efd77.js" defer></script><script src="/unide/files/de162ef814559a2126c1.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/8e06e143d95ab5687001.js" defer></script>
+  </h1> </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>window.__NUXT__={layout:"default",data:[{isStatic:!0},{}],error:null,serverRendered:!0}</script><script src="/unide/files/a195a9468a7b0964153f.js" defer></script><script src="/unide/files/08afffd6ed19d05d9d58.js" defer></script><script src="/unide/files/e915e0c530b16a314b13.js" defer></script><script src="/unide/files/42ea76d2884ad7b86a73.js" defer></script><script src="/unide/files/c01c4654e10f48ab3d43.js" defer></script><script src="/unide/files/7267eda02aa7844877f4.js" defer></script>
   </body>
 </html>