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