webpackJsonp([12],{"/TYz":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=i("iA8U"),s=!1;var n=function(e){s||i("DDjm")},o=i("VU/8")(null,a.a,!1,n,null,null);o.options.__file="pages\\index.vue",t.default=o.exports},DDjm:function(e,t,i){var a=i("Kc09");"string"==typeof a&&(a=[[e.i,a,""]]),a.locals&&(e.exports=a.locals);i("rjj0")("24fa40f9",a,!1)},Kc09:function(e,t,i){(e.exports=i("YHym")(!1)).push([e.i,".home h2{margin-top:1rem}.home .card{max-width:33%;margin:0 1rem 1rem}.home .card .card-content{padding:.5rem;font-size:.75rem}.home .card.is-pulled-left{margin-left:0}.home .card.is-pulled-right{margin-right:0}.home .card.is-pulled-right .card-content{text-align:right}",""])},iA8U:function(e,t,i){"use strict";var a=function(){var e=this.$createElement;this._self._c;return this._m(0)};a._withStripped=!0;var s={render:a,staticRenderFns:[function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"home"},[t("div",[t("h1",{staticClass:"title is-3"},[this._v("\n      Understand Industry devices\n    ")]),t("div",{staticClass:"card is-pulled-right"},[t("div",{staticClass:"card-image"},[t("figure",{staticClass:"image"},[t("img",{attrs:{src:"images/languages.png",alt:"Overview Languages",title:"Overview Languages"}})])]),t("div",{staticClass:"card-content"},[this._v("Languages of the world")])]),t("p",{staticClass:"is-clearfix"},[this._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 "),t("i",[this._v("hello")]),this._v(", "),t("i",[this._v("I am hungry")]),this._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    ")]),t("div",{staticClass:"card is-pulled-left"},[t("div",{staticClass:"card-image"},[t("figure",{staticClass:"image"},[t("img",{attrs:{src:"images/machines.jpg",alt:"EDM machines",title:"EDM machines"}})])]),t("div",{staticClass:"card-content"},[this._v("Machines in production")])]),t("p",{staticClass:"is-clearfix"},[this._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."),t("br"),this._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    ")])]),t("div",[t("div",{staticClass:"card is-pulled-right"},[t("div",{staticClass:"card-image"},[t("figure",{staticClass:"image"},[t("img",{attrs:{src:"images/analysis.jpg",alt:"Cooperation",title:"Cooperation"}})])]),t("div",{staticClass:"card-content"},[this._v("Collaboration with partner")])]),t("h2",{staticClass:"title is-4"},[this._v("Production Performance Management Protocol ("),t("i",[this._v("PPMP")]),this._v(")")]),t("p",{staticClass:"is-clearfix"},[this._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."),t("br"),this._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 ("),t("i",[this._v("PPMP")]),this._v(").\n    ")]),t("div",{staticClass:"card is-pulled-left"},[t("div",{staticClass:"card-image"},[t("figure",{staticClass:"image"},[t("img",{attrs:{src:"images/eclipse-426x100.png",alt:"Eclipse logo",title:"Eclipse logo"}})])])]),t("p",[this._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    ")])])])}]};t.a=s}});