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