MQTTPublishMeta() ================= Publish custom metadata called by the CRBasic program. .. admonition:: Syntax **MQTTPublishMeta** (Result, "TableName", "FieldName", "Key", "Value", "OptionalTopicSegment") - ``Result`` {*float* | *long*} : Response code - ``0`` = Success - ``-1`` = No MQTT connection - ``-2`` = TableName or FieldName not found - ``-5`` = System error - ``-6`` = Did not run - ``"TableName"`` {*string*} or {NULL string ""} : Specifies what data table to target. The ``TableName`` will be included in the topic structure. If a null string is supplied, the segment is omitted from the topic structure. - ``"FieldName"`` {*string*} or {NULL string ""} : Specifies what field name in a data table to target. The ``FieldName`` will be included in the topic structure. If a null string is supplied, the segment is omitted from the topic structure. - ``"Key"`` {*string*} : Specifies the JSON key to publish. The provided ``Key`` is used directly as the JSON key and is paired with the value supplied in ``Value``. - ``"Value"`` {*float* | *long* | *string* | *boolean* | *double*} : The provided ``Value`` is encoded into JSON and published as the JSON value for the given ``Key``. - ``"OptionalTopicSegment"`` {*string*} *(Optional)* : Adds an extra topic level. When provided, this segment is appended to the topic structure where the ``Key`` and ``Value`` are published. :guilabel:`Topic Structure` ``/pr//metadata/#`` .. admonition:: Example Topic Structures Based on Parameters - MQTTPublishMeta(meta_data_result, "", "", "", "") - :guilabel:`Topic` /pr/ **/metadata** - MQTTPublishMeta(meta_data_result, "", "", "", "", "") - :guilabel:`Topic` /pr/ **/metadata/** - MQTTPublishMeta(meta_data_result, "", "", "", "") - :guilabel:`Topic` /pr/ **/metadata/** - MQTTPublishMeta(meta_data_result, "", "", "", "") - :guilabel:`Topic` /pr/ **/metadata//** - MQTTPublishMeta(meta_data_result, "", "", "Key", "Value", "") - :guilabel:`Topic` /pr/ **/metadata///** - MQTTPublishMeta(meta_data_result, "", "", "Key", "Value", "") - :guilabel:`Topic` /pr/ **/metadata//** Data Format Structure --------------------- :guilabel:`Payload` JSON .. code-block:: json { "notice": { "UID": "", "timestamp": "yyyy-mm-ddThh:mm:ss", "": "" } } CRBasic Example --------------- .. code-block:: basic Const LONGITUDE = -111.8549 Const LATITUDE = 41.7666 Const ALTITUDE = 4498 Public engine_rpm As Long Public fuel_level As Float Public pto_engaged As Boolean Public tire_pressure(4) As Float Public meta_data_result Public trigger as Boolean DataTable (Deere_4020_Chart, 1, -1) DataInterval (0, 10, Sec, 10) Sample (1, engine_rpm, Long) Sample (1, fuel_level, IEEE4) Sample (1, pto_engaged, Boolean) Sample (4, tire_pressure(), IEEE4) MQTTPublishTable (1, 0, 10, Sec, 2, LONGITUDE, LATITUDE, ALTITUDE) EndTable 'Main Program BeginProg 'Test Values engine_rpm = 1800 fuel_level = 100 pto_engaged = True tire_pressure(1) = 32.1 tire_pressure(2) = 32.2 tire_pressure(3) = 35.1 tire_pressure(4) = 35.2 Scan (10, Sec, 0, 0) 'Trigger MQTTPublishMeta() Examples: If trigger = True Then trigger = False ' reset trigger '1 - Topic: /pr//metadata ' - Only the key:value are used MQTTPublishMeta (meta_data_result, "", "", "farm_name", "Twin Pines") '2 - Topic: /pr//metadata/established ' - OptionalTopicSegment = established MQTTPublishMeta (meta_data_result, "", "", "date", "11/05/1955", "established") '3 - Topic: /pr//metadata/Deere_4020_Chart ' - TableName = Deere_4020_Chart MQTTPublishMeta (meta_data_result, "Deere_4020_Chart", "", "VIN", "JD4020-000001") '4 - Topic: /pr//metadata/Deere_4020_Chart/engine_rpm ' - TableName = Deere_4020_Chart ' - FieldName = engine_rpm MQTTPublishMeta (meta_data_result, "Deere_4020_Chart", "engine_rpm", "rpm_range", "1500-2202") '5 - Topic: /pr//metadata/Deere_4020_Chart/engine_rpm/pto_rpm ' - TableName = Deere_4020_Chart ' - FieldName = engine_rpm ' - OptionalTopicSegment = pto_rpm MQTTPublishMeta (meta_data_result, "Deere_4020_Chart", "engine_rpm", "pto_rpm", "540", "pto_rpm") '6 - Topic: /pr//metadata/Deere_4020_Chart/engine_type ' - TableName = Deere_4020_Chart ' - OptionalTopicSegment = engine_type MQTTPublishMeta (meta_data_result, "Deere_4020_Chart", "", "type", "6.6L Diesel", "engine_type") EndIf CallTable Deere_4020_Chart NextScan EndProg **Example Data** The following example data corresponds to the 4th example in the CRBasic example. :guilabel:`Subscribe` ``cs/v2/pr/ABCD-EFGH-1234/metadata/Deere_4020_Chart/engine_rpm`` .. code-block:: json { "notice": { "UID": "ABCD-EFGH-1234", "timestamp": "2026-01-31T12:14:00", "rpm_range": "1500-2202" } }