{"id":12748,"date":"2021-12-09T10:11:02","date_gmt":"2021-12-09T13:11:02","guid":{"rendered":"http:\/\/kb.elipse.com.br\/en\/?p=12748"},"modified":"2021-12-09T10:11:02","modified_gmt":"2021-12-09T13:11:02","slug":"support-for-object-repetition-inside-arrays-in-driver-mqtt","status":"publish","type":"post","link":"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/","title":{"rendered":"Support for object repetition inside arrays in Driver MQTT."},"content":{"rendered":"<p>This article presents an example of support for object repetition inside arrays in a <a href=\"https:\/\/www.elipse.com.br\/downloads\/?cat=48&#038;key=&#038;language=ptbr\" target=\"_blank\" rel=\"noopener noreferrer\">Driver MQTT<\/a>.<\/p>\n<h3>Question:<\/h3>\n<div>\n<p style=\"text-align: justify;\">Usually, controllers send messages under a specific topic, as in the example below:<\/p>\n<\/div>\n<div>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\">{\"MessageType\":\"TagValues\",\"WagoProtocol\":\"1.5.0\",\"CollectionId\":0,\"TagData\":[{\"Time\":\"2021-08-02T13:35:03.442-3:00\",\"Values\":{\"OEE\":0.11999999731779099,\"Disponibilidade\":3.4100000858306885,\"Performace\":3.4100000858306885,\"Qualidade\":99.680000305175781,\"Produtos Produzidos\":929,\"Produtos Rejeitados\":3}}]}<\/pre>\n<p style=\"text-align: justify;\">However, a few controllers have a kind of buffer that, when losing connection to the basis, accumulate messages locally. In this example, in the first message after reconnection, the following message is sent in the same topic:<\/p>\n<\/div>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\">{\"MessageType\":\"TagValues\",\"WagoProtocol\":\"1.5.0\",\"CollectionId\":0,\"TagData\":[{\"Time\":\"2021-08-02T13:35:08.442-3:00\",\"Values\":{\"OEE\":0.11999999731779099,\"Disponibilidade\":3.4300000667572021,\"Performace\":3.4300000667572021,\"Qualidade\":99.680000305175781,\"Produtos Produzidos\":934,\"Produtos Rejeitados\":3}},{\"Time\":\"2021-08-02T13:35:13.442-3:00\",\"Values\":{\"OEE\":0.11999999731779099,\"Disponibilidade\":3.4500000476837158,\"Performace\":3.4500000476837158,\"Qualidade\":99.680000305175781,\"Produtos Produzidos\":939,\"Produtos Rejeitados\":3}},{\"Time\":\"2021-08-02T13:35:18.443-3:00\",\"Values\":{\"OEE\":0.11999999731779099,\"Disponibilidade\":3.4700000286102295,\"Performace\":3.4700000286102295,\"Qualidade\":99.680000305175781,\"Produtos Produzidos\":944,\"Produtos Rejeitados\":3}}]}<\/pre>\n<p>In the example above, there are three accumulated messages.<\/p>\n<h3>Solution:<\/h3>\n<p style=\"text-align: justify;\">Since the release of version 1.0.25 of <a href=\"https:\/\/kb.elipse.com.br\/en\/category\/english\/drivers-en\/mqtt-driver\/\" target=\"_blank\" rel=\"noopener noreferrer\">Driver Elipse MQTT<\/a>, when declaring the template, you have been able to add a keyword\u00a0 <em><strong>Repeat_E3VAL<\/strong><\/em> right after the bracket representing the array, where the object can repeat itself. Therefore, it is now possible to have object repetition in a driver MQTT.<\/p>\n<p style=\"text-align: justify;\">Adding this word turns the JSON invalid, but the driver removes this keyword and &#8220;marks&#8221; the spot of its position; then, it starts using a template.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\">{\"MessageType\":\"DUMMY\",\"WagoProtocol\":\"1.5.0\",\"CollectionId\":\"DUMMY\",\"TagData\":[Repeat_E3VAL{\"Time\":\"TS_TEXT(%Y-%m-%dT%H:%M:%S.%f%+)\",\"Values\":{\"OEE\":\"E3VAL\",\"Disponibilidade\":\"E3VAL\",\"Performace\":\"E3VAL\",\"Qualidade\":\"E3VAL\",\"Produtos Produzidos\":\"E3VAL\",\"Produtos Rejeitados\":\"E3VAL\"}}]}<\/pre>\n<p style=\"text-align: justify;\">Hence, after the driver has processed each element of an array whose elements can repeat themselves, the driver proceeds to:<\/p>\n<ol>\n<li style=\"text-align: justify;\">copy the values it has so far,<\/li>\n<li style=\"text-align: justify;\">adds it as an element from another set of values,<\/li>\n<li style=\"text-align: justify;\">and then continues to process the next element that it will copy &#8220;over&#8221; the values of the first item, whichever is in the second one.<\/li>\n<\/ol>\n<p style=\"text-align: justify;\">If the template declares one or more E3VAL before the repetition point, each set will repeat these values up until this point.<\/p>\n<p style=\"text-align: justify;\">So, if there are 10 sets inside the array, the result is a set of values with 10 values inside; this in turn is sent to the block\/tag in Elipse E3, and the <a href=\"https:\/\/kb.elipse.com.br\/tags-reportados-por-eventos\/\">OnRead<\/a> event is called 10 times, one for each set.<\/p>\n<h3>Related articles:<\/h3>\n<hr \/>\n<ul>\n<li><a href=\"https:\/\/kb.elipse.com.br\/en\/demo-application-mqtt-driver-commnicating-with-mosquitto-mqtt-broker\/\">Demo application: MQTT driver commnicating with Mosquitto MQTT Broker.<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This article presents an example of support for object repetition inside arrays in a Driver MQTT. Question: Usually, controllers send messages under a specific topic, as in the example below:&hellip;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0},"categories":[977],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Support for object repetition inside arrays in Driver MQTT.<\/title>\n<meta name=\"description\" content=\"This article presents an example of support for object repetition inside arrays in a Driver MQTT, developed by Elipse Software.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Support for object repetition inside arrays in Driver MQTT.\" \/>\n<meta property=\"og:description\" content=\"This article presents an example of support for object repetition inside arrays in a Driver MQTT, developed by Elipse Software.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/\" \/>\n<meta property=\"og:site_name\" content=\"Elipse Knowledgebase\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/elipsesoftware\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-09T13:11:02+00:00\" \/>\n<meta name=\"author\" content=\"D\u00e9lio Damin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"D\u00e9lio Damin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/\"},\"author\":{\"name\":\"D\u00e9lio Damin\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/be597eff34b5f24af940a55332870778\"},\"headline\":\"Support for object repetition inside arrays in Driver MQTT.\",\"datePublished\":\"2021-12-09T13:11:02+00:00\",\"dateModified\":\"2021-12-09T13:11:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/\"},\"wordCount\":304,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\"},\"articleSection\":[\"MQTT Driver\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/\",\"url\":\"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/\",\"name\":\"Support for object repetition inside arrays in Driver MQTT.\",\"isPartOf\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#website\"},\"datePublished\":\"2021-12-09T13:11:02+00:00\",\"dateModified\":\"2021-12-09T13:11:02+00:00\",\"description\":\"This article presents an example of support for object repetition inside arrays in a Driver MQTT, developed by Elipse Software.\",\"breadcrumb\":{\"@id\":\"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/kb.elipse.com.br\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Support for object repetition inside arrays in Driver MQTT.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kb.elipse.com.br\/#website\",\"url\":\"https:\/\/kb.elipse.com.br\/\",\"name\":\"Elipse Knowledgebase\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kb.elipse.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\",\"name\":\"Elipse Software\",\"url\":\"https:\/\/kb.elipse.com.br\/\",\"sameAs\":[\"http:\/\/www.facebook.com\/elipsesoftware\"],\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png\",\"contentUrl\":\"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png\",\"width\":161,\"height\":58,\"caption\":\"Elipse Software\"},\"image\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/be597eff34b5f24af940a55332870778\",\"name\":\"D\u00e9lio Damin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/fdf251d36430f8dd22144c3f1bc53376?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/fdf251d36430f8dd22144c3f1bc53376?s=96&d=mm&r=g\",\"caption\":\"D\u00e9lio Damin\"},\"url\":\"https:\/\/kb.elipse.com.br\/en\/author\/delio\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Support for object repetition inside arrays in Driver MQTT.","description":"This article presents an example of support for object repetition inside arrays in a Driver MQTT, developed by Elipse Software.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/","og_locale":"en_US","og_type":"article","og_title":"Support for object repetition inside arrays in Driver MQTT.","og_description":"This article presents an example of support for object repetition inside arrays in a Driver MQTT, developed by Elipse Software.","og_url":"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/","og_site_name":"Elipse Knowledgebase","article_publisher":"http:\/\/www.facebook.com\/elipsesoftware","article_published_time":"2021-12-09T13:11:02+00:00","author":"D\u00e9lio Damin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"D\u00e9lio Damin","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/#article","isPartOf":{"@id":"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/"},"author":{"name":"D\u00e9lio Damin","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/be597eff34b5f24af940a55332870778"},"headline":"Support for object repetition inside arrays in Driver MQTT.","datePublished":"2021-12-09T13:11:02+00:00","dateModified":"2021-12-09T13:11:02+00:00","mainEntityOfPage":{"@id":"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/"},"wordCount":304,"commentCount":0,"publisher":{"@id":"https:\/\/kb.elipse.com.br\/#organization"},"articleSection":["MQTT Driver"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/","url":"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/","name":"Support for object repetition inside arrays in Driver MQTT.","isPartOf":{"@id":"https:\/\/kb.elipse.com.br\/#website"},"datePublished":"2021-12-09T13:11:02+00:00","dateModified":"2021-12-09T13:11:02+00:00","description":"This article presents an example of support for object repetition inside arrays in a Driver MQTT, developed by Elipse Software.","breadcrumb":{"@id":"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/kb.elipse.com.br\/en\/support-for-object-repetition-inside-arrays-in-driver-mqtt\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/kb.elipse.com.br\/en\/"},{"@type":"ListItem","position":2,"name":"Support for object repetition inside arrays in Driver MQTT."}]},{"@type":"WebSite","@id":"https:\/\/kb.elipse.com.br\/#website","url":"https:\/\/kb.elipse.com.br\/","name":"Elipse Knowledgebase","description":"","publisher":{"@id":"https:\/\/kb.elipse.com.br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kb.elipse.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/kb.elipse.com.br\/#organization","name":"Elipse Software","url":"https:\/\/kb.elipse.com.br\/","sameAs":["http:\/\/www.facebook.com\/elipsesoftware"],"logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/","url":"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png","contentUrl":"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png","width":161,"height":58,"caption":"Elipse Software"},"image":{"@id":"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/be597eff34b5f24af940a55332870778","name":"D\u00e9lio Damin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/fdf251d36430f8dd22144c3f1bc53376?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fdf251d36430f8dd22144c3f1bc53376?s=96&d=mm&r=g","caption":"D\u00e9lio Damin"},"url":"https:\/\/kb.elipse.com.br\/en\/author\/delio\/"}]}},"_links":{"self":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/12748"}],"collection":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/comments?post=12748"}],"version-history":[{"count":4,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/12748\/revisions"}],"predecessor-version":[{"id":12752,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/12748\/revisions\/12752"}],"wp:attachment":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/media?parent=12748"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/categories?post=12748"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/tags?post=12748"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}