(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{366: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#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",source:"DEVICE",state:"NEW",title:"control board damaged",ts:t.toISOString(),type:"WARNING",additionalData:{firmware:"20130304_22.020"}},{code:"33-02",description:"Disk size has reached limit. Unable to write log files.",severity:"HIGH",source:"TECHNICAL_INFO",title:"Disk size limit reached",ts:new Date(t.valueOf()+100).toISOString()}]}},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].source","messages[0].state","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: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(" "),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}}]);