(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}}]);