# MQTT Engine BIRTH certificate format for custom array properties

**URL:** <https://forum.inductiveautomation.com/t/mqtt-engine-birth-certificate-format-for-custom-array-properties/40248>\
**Category:** Ignition\
**Created:** [November 3, 2020, 5:23pm UTC](https://forum.inductiveautomation.com/t/mqtt-engine-birth-certificate-format-for-custom-array-properties/40248 "2020-11-03T17:23:44Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![aamrc](https://avatars.discourse-cdn.com/v4/letter/a/dfb087/32.png) [@aamrc](https://forum.inductiveautomation.com/u/aamrc)\
**Post date:** [November 3, 2020, 5:23pm UTC](https://forum.inductiveautomation.com/t/mqtt-engine-birth-certificate-format-for-custom-array-properties/40248/1 "2020-11-03T17:23:44Z")

</div>

Hi,

I’m looking for the correct format in the BIRTH certificate to add a custom array property for my tag.

Thus far I can add properties (`keys` and `values`) with the BIRTH certificate as follows

```auto
{
    "timestamp": 1565577612580,
    "metrics": [
        {
            "name": "myTagName",
            "type": "boolean",
            "value": false,
            "properties": {
                "keys": {
                    "type": "uint8",
                    "value": 321
                },
                "values": {
                    "type": "string",
                    "value": "spam"
                }
            }
        }
    ]
}

```

However, I’m looking for the correct syntax for adding arrays/lists as properties. i.e. if `keys` would be a fixed or variabe list of numbers.

Kind Regards  
Art

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [November 3, 2020, 5:41pm UTC](https://forum.inductiveautomation.com/t/mqtt-engine-birth-certificate-format-for-custom-array-properties/40248/2 "2020-11-03T17:41:51Z")

</div>

Are you actually asking about a `DBIRTH` payload?

The optional properties in a metric is actually a PropertySet object, which would look something like this, I think:

```auto
{
    "timestamp": 1565577612580,
    "metrics": [
        {
            "name": "myTagName",
            "type": "boolean",
            "value": false,
            "properties": {
                "keys": [
                    "prop1name",
                    "prop2name"
                ],
                "values": [
                    {
                        "type": "uint8",
                        "value": 321
                    },
                    {
                        "type": "string",
                        "value": "spam"
                    }
                ]
            }
        }
    ]
}

```

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [November 3, 2020, 5:46pm UTC](https://forum.inductiveautomation.com/t/mqtt-engine-birth-certificate-format-for-custom-array-properties/40248/3 "2020-11-03T17:46:18Z")

</div>

If you’re going to be working with Sparkplug at this level you’re going to have to dig through the relatively difficult to navigate and understand and spec: [https://www.eclipse.org/tahu/spec/Sparkplug%20Topic%20Namespace%20and%20State%20ManagementV2.2-with%20appendix%20B%20format%20-%20Eclipse.pdf](https://www.eclipse.org/tahu/spec/Sparkplug%20Topic%20Namespace%20and%20State%20ManagementV2.2-with%20appendix%20B%20format%20-%20Eclipse.pdf)

The spec is being worked on now that it’s an Eclipse Foundation project. Hopefully future versions are easier to digest.

---

<div class="post-metadata">

**Author:** ![aamrc](https://avatars.discourse-cdn.com/v4/letter/a/dfb087/32.png) [@aamrc](https://forum.inductiveautomation.com/u/aamrc)\
**Post date:** [November 3, 2020, 5:52pm UTC](https://forum.inductiveautomation.com/t/mqtt-engine-birth-certificate-format-for-custom-array-properties/40248/4 "2020-11-03T17:52:08Z")

</div>

Hi Kevin,

The Node-RED client does not seem to like the format. I get a `TypeError: Cannot read property 'toUpperCase' of undefined`, when that JSON is used for DBIRTH

I know what you mean about the spec as I’ve read it, I’ve noticed that I could not just set datatype as `PropertySet` thus I thought I’ll ask.

I basically want to create a tag property that is a list of strings. And since I saw that an `Array` is an option under Custom Properties I was wondering what is the format to assign a datatype to a tag array property.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [November 3, 2020, 5:53pm UTC](https://forum.inductiveautomation.com/t/mqtt-engine-birth-certificate-format-for-custom-array-properties/40248/5 "2020-11-03T17:53:16Z")

</div>

Maybe @wes0johnson can chime in here.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [November 3, 2020, 5:58pm UTC](https://forum.inductiveautomation.com/t/mqtt-engine-birth-certificate-format-for-custom-array-properties/40248/6 "2020-11-03T17:58:11Z")

</div>

> [@aamrc](#):
>
> I basically want to create a tag property that is a list of strings.

I don't think Sparkplug has array/list types... other than maybe Dataset. You might have to make a single string property that is comma separated or something and then split it when consumed?

---

<div class="post-metadata">

**Author:** ![aamrc](https://avatars.discourse-cdn.com/v4/letter/a/dfb087/32.png) [@aamrc](https://forum.inductiveautomation.com/u/aamrc)\
**Post date:** [November 3, 2020, 6:05pm UTC](https://forum.inductiveautomation.com/t/mqtt-engine-birth-certificate-format-for-custom-array-properties/40248/7 "2020-11-03T18:05:57Z")

</div>

It is a possibility. I was hoping there is a slicker way, but I can fall back on a comma separated list or JSON

---

<div class="post-metadata">

**Author:** ![wes0johnson](https://avatars.discourse-cdn.com/v4/letter/w/7ab992/32.png) [@wes0johnson](https://forum.inductiveautomation.com/u/wes0johnson)\
**Post date:** [November 3, 2020, 6:18pm UTC](https://forum.inductiveautomation.com/t/mqtt-engine-birth-certificate-format-for-custom-array-properties/40248/8 "2020-11-03T18:18:53Z")

</div>

Arrays of Strings are not supported yet. We did just add array support for all Ignition array types except arrays of Strings and arrays of DateTime in Ignition8 compatible Transmission and Engine modules. These will be release later in the week. But since arrays of Strings are not supported I’d suggest using a comma separated String or something similar as Kevin suggested.

---

<div class="post-metadata">

**Author:** ![aamrc](https://avatars.discourse-cdn.com/v4/letter/a/dfb087/32.png) [@aamrc](https://forum.inductiveautomation.com/u/aamrc)\
**Post date:** [November 3, 2020, 6:19pm UTC](https://forum.inductiveautomation.com/t/mqtt-engine-birth-certificate-format-for-custom-array-properties/40248/9 "2020-11-03T18:19:38Z")

</div>

> [@wes0johnson](#):
>
> ase later in the week. But since arrays of Strings are not supported I’d suggest using a comma separated String or something similar as Kevin sugge

Thanks Wes for clarifying this

---

<div class="post-metadata">

**Author:** ![Steve\_Hook](https://avatars.discourse-cdn.com/v4/letter/s/e495f1/32.png) [@Steve\_Hook](https://forum.inductiveautomation.com/u/Steve_Hook)\
**Post date:** [August 24, 2023, 4:36am UTC](https://forum.inductiveautomation.com/t/mqtt-engine-birth-certificate-format-for-custom-array-properties/40248/10 "2023-08-24T04:36:01Z")

</div>

Resurrecting this thread. Are string array's on the transmission road map? I'm trying to bridge OPC UA data to MQTT but without Array of String support added manipulation is required and the complexity jumps significantly.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [August 24, 2023, 11:20am UTC](https://forum.inductiveautomation.com/t/mqtt-engine-birth-certificate-format-for-custom-array-properties/40248/11 "2023-08-24T11:20:01Z")

</div>

The latest SparkPlug spec does include string arrays.

---

<div class="post-metadata">

**Author:** ![Steve\_Hook](https://avatars.discourse-cdn.com/v4/letter/s/e495f1/32.png) [@Steve\_Hook](https://forum.inductiveautomation.com/u/Steve_Hook)\
**Post date:** [August 24, 2023, 3:22pm UTC](https://forum.inductiveautomation.com/t/mqtt-engine-birth-certificate-format-for-custom-array-properties/40248/12 "2023-08-24T15:22:11Z")

</div>

Thats great to hear. This is probably more of a question for Cirrus anyways, but any idea if we can expect to see the MQTT modules updated for Sparkplug 3.0 anytime soon?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [August 24, 2023, 3:24pm UTC](https://forum.inductiveautomation.com/t/mqtt-engine-birth-certificate-format-for-custom-array-properties/40248/13 "2023-08-24T15:24:12Z")

</div>

Cirrus Link does have there own forum, too:

> **[Cirrus Link Forum](https://forum.cirrus-link.com/)**
>
> A place to discuss software from Cirrus Link Solutions

Probably worth asking over there (and cross-linking).

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [August 24, 2023, 3:28pm UTC](https://forum.inductiveautomation.com/t/mqtt-engine-birth-certificate-format-for-custom-array-properties/40248/14 "2023-08-24T15:28:05Z")

</div>

I don't know, but I'm curious to hear the answer.

I assume they're already using Sparkplug 3.0. The spec, at least originally, was retroactively derived from the their original product work. I thought the modules were basically a reference implementation.

---

<div class="post-metadata">

**Author:** ![justinedwards.jle](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/justinedwards.jle/32/37854_2.png) [@justinedwards.jle](https://forum.inductiveautomation.com/u/justinedwards.jle)\
**Post date:** [August 24, 2023, 7:05pm UTC](https://forum.inductiveautomation.com/t/mqtt-engine-birth-certificate-format-for-custom-array-properties/40248/15 "2023-08-24T19:05:04Z")

</div>

> [@Kevin.Herron](#):
>
> I'm curious to hear the answer

**The answer:**

> [MQTT Modules have been Sparkplug v3.0.0 compliant since the v4.0.14 module release)](https://forum.cirrus-link.com/t/sparkplug-3-0-in-ignition/408/2?u=justinedwards.jle)
