(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{148: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},153:function(e,t,n){},172:function(e,t,n){"use strict";var o=n(153);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(148).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}}]);