(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{360:function(e,t,n){"use strict";n.r(t);var c=n(152),r=(n(61),n(11)),o=(n(21),n(149),n(154)),l=n.n(o),d=n(148),m=n(155),h=n.n(m),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#v3",device:{id:n},messages:[{ts:t.toISOString(),code:"190ABT"}]},multipleMachineMessages:{"content-spec":"urn:spec://eclipse.org/unide/machine-message#v3",device:{id:n,mode:"auto",state:"OK",additionalData:{swVersion:"2.0.3.13",swBuildID:"41535"}},messages:[{code:"190ABT",description:"Electronic control board or its electrical connections are damaged",hint:"Check the control board",origin:"sensor-id-992.2393.22",severity:"HIGH",title:"control board damaged",ts:t.toISOString(),type:"DEVICE",additionalData:{firmware:"20130304_22.020"}},{code:"33-02",description:"Disk size has reached limit. Unable to write log files.",severity:"HIGH",title:"Disk size limit reached",ts:new Date(t.valueOf()+100).toISOString(),type:"TECHNICAL_INFO"}]}},this.$static.examples=Object.entries(Object(r.a)({},["content-spec","device","device.id","device.mode","device.additionalData","messages","messages[0].code","messages[0].description","messages[0].hint","messages[0].origin","messages[0].severity","messages[0].title","messages[0].ts","messages[0].type","messages[0].additionalData"].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]:console.error('no example provided in machine-message for: "'.concat(o,'": "').concat(path,'"')),t},{})},filters:{stringify:function(e){return JSON.stringify(e," ",2)}},components:{card:d.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(" "),e._m(1),e._v(" "),n("schemaDetail",{attrs:{type:"v3/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  ")])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"diagram"},[t("img",{attrs:{src:"images/specification/v3/messagePayload.svg",alt:"Class diagram of the message payload",title:"Class diagram of the message payload"}})])}],!1,null,null,null);t.default=component.exports}}]);