<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.14 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC7252 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7252.xml">
<!ENTITY RFC7950 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7950.xml">
<!ENTITY RFC8610 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8610.xml">
<!ENTITY RFC8724 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8724.xml">
<!ENTITY RFC8824 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8824.xml">
<!ENTITY RFC9254 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9254.xml">
<!ENTITY RFC9363 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9363.xml">
<!ENTITY I-D.ietf-core-comi SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-comi.xml">
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8376 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8376.xml">
<!ENTITY RFC9179 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9179.xml">
<!ENTITY RFC8949 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml">
<!ENTITY RFC7396 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7396.xml">
<!ENTITY RFC8428 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8428.xml">
<!ENTITY RFC9232 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9232.xml">
<!ENTITY RFC8639 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8639.xml">
<!ENTITY I-D.ietf-core-sid SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-sid.xml">
<!ENTITY I-D.ietf-core-yang-cbor SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-yang-cbor.xml">
<!ENTITY I-D.gudi-t2trg-senml-as-coreconf SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.gudi-t2trg-senml-as-coreconf.xml">
<!ENTITY I-D.birkholz-yang-core-telemetry SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.birkholz-yang-core-telemetry.xml">
<!ENTITY RFC7228 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7228.xml">
<!ENTITY RFC6347 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6347.xml">
<!ENTITY RFC8613 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8613.xml">
]>


<rfc ipr="trust200902" docName="draft-toutain-t2trg-coreconf-m2m-00" category="info" submissionType="IRTF">

  <front>
    <title abbrev="coreconf-m2m">CORECONF for Machine-to-Machine Communication</title>

    <author fullname="Laurent Toutain">
      <organization>IMT Atlantique</organization>
      <address>
        <email>laurent.toutain@imt-atlantique.fr</email>
      </address>
    </author>

    <date year="2026" month="June" day="04"/>

    <area>IRTF</area>
    <workgroup>Thing-to-Thing Research Group (T2TRG)</workgroup>
    <keyword>CORECONF</keyword> <keyword>CoMI</keyword> <keyword>YANG</keyword> <keyword>CBOR</keyword> <keyword>CoAP</keyword> <keyword>M2M</keyword> <keyword>IoT</keyword> <keyword>constrained devices</keyword> <keyword>SID</keyword>

    <abstract>


<t>The document addresses the specific challenges of M2M interactions where
both endpoints may be constrained nodes, and explores the use of CORECONF
primitives.</t>

<t>This document describes the use of CORECONF (CoAP Management Interface) for
Machine-to-Machine (M2M) communication in constrained IoT environments.
It defines a YANG data model enabling remote management and configuration
of constrained devices using CoAP, CBOR, and YANG SID identifiers. The
serialization in CBOR of this data model limits the payload size.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>This document proposes a YANG data model designed for constrained devices and low-power networks. By combining YANG’s strong typing with CBOR’s compact binary serialization and CoAP’s lightweight transport, the model enables efficient Machine-to-Machine (M2M) data exchange while remaining within the bandwidth and energy budgets of constrained environments. SCHC header compression <xref target="RFC8724"/> may further be used to reduce the overhead of IPv6, UDP, and CoAP headers on the most constrained links.</t>

<t>Some data models and protocols already exist for M2M communication in IoT environments, but none is fully adapted to the constraints of low-power networks in terms of message size, energy consumption, and interaction patterns. This section reviews the main existing approaches and explains why a new model is needed.</t>

<t>SenML <xref target="RFC8428"/> has become a widely adopted format for Machine-to-Machine (M2M) data exchange in IoT environments, enabling constrained devices to report sensor measurements and time series in JSON or CBOR. However, SenML is primarily a data serialization format: it structures payloads but does not enforce strong type checking, schema validation, or support for configuration and remote operations.</t>

<t>SenML is also part of the LwM2M framework <xref target="OMA-LwM2M"/>, which defines a broader device management protocol built on CoAP and SenML for operator-to-device interactions. However, LwM2M relies on periodic reporting and registration messages that impose a non-trivial overhead, particularly on Low-Power Wide-Area Networks (LPWANs) <xref target="RFC8376"/> where bandwidth and energy budgets are severely constrained.</t>

<t>In some ways, SenML may be described by a YANG Data Model <xref target="I-D.gudi-t2trg-senml-as-coreconf"/>, but the integration in the YANG ecosystem remains limited.</t>

<t>The CORECONF protocol stack  using YANG <xref target="RFC7950"/> for Data Modeling,  CoAP <xref target="RFC7252"/> for data transport, and CBOR <xref target="RFC8949"/> and YANG SID identifiers <xref target="I-D.ietf-core-sid"/> for the compact data serialization provides the richer foundation that SenML lacks: a strongly typed data model, schema validation, and support for full CRUD operations and actions. However, CORECONF has so far been designed for operator-to-device management, leaving peer-to-peer M2M communication — where both endpoints may themselves be constrained nodes — largely unaddressed.</t>

<t>Some YANG Data Models have been defined for telemetry. <xref target="RFC9232"/> introduces Network Telemetry used to collect vast amounts of data to supervise a network. <xref target="RFC8639"/> allows subscribing to a datastore filtered through XPath and receiving notifications. <xref target="I-D.birkholz-yang-core-telemetry"/> proposes to extend telemetry to CORECONF, but using a traditional approach.</t>

<t>This document adopts a different approach. The goal is to define a YANG Data Model that will benefit from CBOR serialization to optimize the bandwidth to extend CORECONF for M2M use cases over low-power links. This document focuses on transducer management: resource discovery, value polling, statistical computation, threshold alerts, and time-series history notifications. This is an early-stage work; future revisions will explore other categories of measurements and interaction patterns.</t>

<section anchor="use-cases" title="Use Cases">

<t>The targeted use cases are remote sensors installed in the field and connected with LPWAN or Satellite connectivity. SCHC <xref target="RFC8724"/> <xref target="RFC8824"/> is used to compress headers such as IPv6, UDP and CoAP for CORECONF traffic. The payload results from the serialization of the datastore in CBOR.</t>

<t>The model covers the following use cases:</t>

<t><list style="symbols">
  <t>resource discovery: sensors or actuators, regrouped under the name transducers, are discovered with their characteristics (units, precision)</t>
  <t>simple query: each transducer can be individually queried or set.</t>
  <t>statistical computation: the sensor can compute some statistical values, such as mean, variance, min and max. They can be reset.</t>
  <t>alert notification: when a value reaches a threshold (minimum and maximum) a notification message is sent</t>
  <t>time series: values are collected by the device and sent when a limit is reached (number of samples, duration, message size)</t>
</list></t>

</section>
<section anchor="data-representation" title="Data Representation">

<t>CBOR is designed to be concise to represent numerical information since it is directly coded in binary and not represented in ASCII. CBOR also uses binary representation to encode structures such as Maps and Arrays.
The length of a numerical value depends on its value; for instance, numbers between -24 and 23 are coded on a single byte, values between -255 and 255 on two bytes,…</t>

<t>Nevertheless, some representations may be less efficient numerically or less precise. CBOR defines 3 IEEE 754 encodings on 3, 5, or 9 bytes. The smallest representation introduces a close to 1% error.
CBOR also provides a decimal fraction type (tag 4) encoding a value as a <spanx style="verb">[exponent, mantissa]</spanx> pair, which avoids floating-point rounding. However, this representation requires the exponent (the divider) to be repeated alongside every individual quantity, adding overhead for each encoded value.</t>

<t>The assumption leading to this YANG module is to avoid floating-point numbers for their size or precision and rely on integers with a precision parameter indicating, if positive, the number of digits after the decimal point, or the power of 10 if negative.</t>

<t>The module also introduces the notion of time series to record several measurements during a period of time and send them in a single message using a notification. Time series values may further be compressed depending on the nature of the data. This version proposes a compression based on delta encoding: instead of transmitting absolute values, each sample is encoded as the difference from the previous one, which significantly reduces the CBOR payload size for slowly-varying measurements.</t>

<t>The device can also send an alert when a measured value reaches a threshold, allowing the receiver to react promptly without waiting for a scheduled report.</t>

</section>
<section anchor="requirements-language" title="Requirements Language">


<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”,
“SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and
“OPTIONAL” in this document are to be interpreted as described in
BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in
all capitals, as shown here.</t>

</section>
</section>
<section anchor="terminology" title="Terminology">

<t>The following terminology is used in this document:</t>

<t><list style="hanging">
  <t hangText='CORECONF:'>
  CoAP Management Interface, as defined in <xref target="I-D.ietf-core-comi"/>.</t>
  <t hangText='M2M:'>
  Machine-to-Machine communication, referring to direct data exchanges
between devices without human intervention.</t>
  <t hangText='SID:'>
  YANG Schema Item iDentifier, a compact numeric identifier for YANG
data nodes, as defined in <xref target="I-D.ietf-core-sid"/>.</t>
  <t hangText='Constrained Device:'>
  A device with limited processing, memory, and energy resources,
as characterized in <xref target="RFC7228"/>.</t>
  <t hangText='Device:'>
  A piece of equipment containing one or more transducers.</t>
  <t hangText='Transducer:'>
  an interface between the analog and digital world. Transducers are sensors reporting values or actuators having an action on the physical world.</t>
  <t hangText='Quantity:'>
  values manipulated by transducers.</t>
  <t hangText='Value:'>
  other information stored in the datastore including quantities</t>
</list></t>


</section>
<section anchor="the-coreconf-m2m-yang-module" title="The coreconf-m2m YANG Module">

<t>The device acts as a CoAP server implementing CORECONF and exposes its state
through a set of Transducers. A Transducer represents either a sensor (providing
measurements) or an actuator (accepting commands). Each Transducer type is
identified by a YANG identity. When multiple Transducers of the same type are
present on the device, they are distinguished by an instance identifier.</t>

<section anchor="module-overview" title="Module Overview">

<t>For simplicity reasons, we regroup in a single YANG module two elements. The
first element is a set of Transducer identities, which in a real deployment
would typically reside in a separate device-specific module. In this example,
12 transducers are defined, corresponding to the weather station ATMOS41
(see https://metergroup.com/fr/products/atmos-41/).</t>

<t>The second element defines the data structures:</t>

<t><list style="symbols">
  <t>a container including a device description and a list of associated transducers. Each transducer is identified by an identityref and an instance number, allowing several transducers of the same type. Each transducer contains:  <list style="symbols">
      <t>a quantity measured from the field or set by the client.</t>
      <t>a list of statistics (mean, variance, min, max), resettable via RPC.</t>
      <t>alert parameters: threshold values (minimum and maximum) triggering a notification when the measured quantity crosses them.</t>
      <t>time series parameters: collection settings controlling when a series of samples is sent (number of samples, duration, message size).</t>
    </list></t>
  <t>an RPC, now limited to resetting all statistics</t>
  <t>two notification types: one to collect time-series history, and one to alert when a quantity reaches a minimum or maximum threshold.</t>
</list></t>

<t><xref target="fig-cf-m2m-tree"/> gives an overview of the module YANG tree:</t>

<figure title="coreconf-m2m module tree" anchor="fig-cf-m2m-tree"><artwork align="center"><![CDATA[
module: coreconf-m2m
  +--ro state
  |  +--ro uptime?   uint64
  +--rw characteristics
  |  +--rw name?         string
  |  +--rw version?      string
  |  +--rw identifier?   string
  +--rw transducers
     +--rw transducer* [type id]
        +--rw type                       identityref
        +--rw id                         uint8
        +--rw unit?                      string
        +--rw nature?                    transducer-nature
        +--rw precision?                 int8
        +--ro quantity
        |  +--ro value?              int64
        |  +--ro timestamp?          uint64
        |  +--ro u-timestamp?        uint32
        |  +--ro timestamp-source?   enumeration
        |  +--ro statistics
        |     +--ro min?            int64
        |     +--ro max?            int64
        |     +--ro mean?           int64
        |     +--ro median?         int64
        |     +--ro stdev?          uint64
        |     +--ro sample-count?   uint64
        +--rw notification-parameters
        |  +--rw history
        |  |  +--ro active?        boolean
        |  |  +--rw step?          uint32
        |  |  +--rw precision?     uint8
        |  |  +--rw max-samples?   uint32
        |  |  +--rw time-period?   uint32
        |  |  +--rw encoding?      encoding-type
        |  |  +--rw max-payload?   uint32
        |  +--rw sensor-alert
        |     +--ro active?       boolean
        |     +--rw t-min?        int32
        |     +--rw t-max?        int32
        |     +--rw hysteresis?   uint8
        |     +--rw dampening?    uint32
        +---x reset-stats

  rpcs:
    +---x reset-stats

  notifications:
    +---n history
    |  +--ro last?          boolean
    |  +--ro time-series* [type id]
    |     +--ro type        identityref
    |     +--ro id          uint8
    |     +--ro values*     int64
    |     +--ro internal
    |        +--ro last-update?     uint64
    |        +--ro start-time?      uint64
    |        +--ro messages-sent?   uint64
    +---n sensor-alert
       +--ro target* [type id]
          +--ro type     identityref
          +--ro id       uint8
          +--ro value?   int64
]]></artwork></figure>

</section>
<section anchor="state-and-characteristics-sub-tree" title="State and Characteristics Sub-Tree">

<t>These two sub-trees contain global parameters generic to the device, such as uptime.
They are still under development and their content is not yet fully defined.</t>

</section>
<section anchor="transducer-sub-tree" title="transducer sub-tree">

<t>Transducers sub-tree contains the list of transducers (i.e. sensors, actuators) maintained by the device.
A transducer is identified by two elements:</t>

<t><list style="symbols">
  <t>a “type” identityref giving the nature of the transducer,</t>
  <t>an “id” giving the instance number allowing several transducers of the same type.</t>
</list></t>

<t>At this level, three other leaves are defined:</t>

<t><list style="symbols">
  <t>“unit” is a string giving the nature of the quantity. This value may be taken from SenML maintained by IANA. 
The use of a string, instead of identityref is intentional. Units are short names. YANG Identity may be larger and less flexible.</t>
  <t>“nature” reveals if a transducer is a sensor, from which the quantity can be read, or an actuator where the quantity can be written.</t>
  <t>“precision”: is the number of digits after the decimal point. Quantity values are integers multiplied by 10^precision. It can be noted that precision can also be negative for very large values.</t>
</list></t>

<t>These five leaves form the first level of the transducers tree. The recommended approach is to query with depth=0, which returns only the transducer list with its identifying leaves (type, id, unit, nature, precision). This lightweight exchange is sufficient for resource discovery and minimizes traffic on constrained networks.</t>

<t>A query with depth=1 is also possible and returns transducers together with their associated quantity values in a single message. However, the response may be significantly larger, as it includes timestamp and statistics data that the client may not need. On low-power links, it is therefore preferable to perform discovery and value retrieval as two separate queries.</t>

<section anchor="quantity" title="quantity">

<t>The “quantity” sub-tree pushes the leaves to a deeper level, to avoid being retrieved during the resource discovery phase. Quantity contains:</t>

<t><list style="symbols">
  <t>the value adjusted with the precision to be an integer,</t>
  <t>the timestamp in seconds and microseconds,</t>
  <t>the entity in charge of the timestamp, which can be the device itself or the receiver.</t>
</list></t>

<t>Under “quantity”, the sub-level “statistics” includes major statistic for a specific transducer. Locally computed statistics. Statistics may be erased for each transducer by calling the “reset-stats” action, or globally for all transducers with the “reset-stats” RPC.</t>

</section>
<section anchor="notification-parameters" title="Notification Parameters">

<t>The model supports two kinds of notifications:</t>

<t><list style="symbols">
  <t>“sensor-alert” will send a notification when the measured quantity reaches one or two limits, minimal and maximal, or goes back to a value between these two bounds. To avoid fluctuations, two mechanisms are in place:
  <list style="symbols">
      <t>“hysteresis” defines a percentage, by default 5% around the limit, so if a maximum limit is set to 100, an alert message will be triggered when the quantity is higher than 105 and another alert will be sent when the quantity becomes lower than 95%. The value is sent in the notification message, so the client is able to know the state of the alert.</t>
      <t>“dampening” limits the number of messages sent.</t>
    </list></t>
  <t>“history” builds time series:
  <list style="symbols">
      <t>“step” parameter defines at which interval samples are taken.</t>
      <t>“precision” allows overriding the quantity precision defined in the transducer. By default the precision is the one associated with the transducer.</t>
      <t>“encoding” indicates how information is stored in the time series:
      <list style="symbols">
          <t>“direct”: all the values are stored with the precision.</t>
          <t>“delta”: the first value is the reference and the following ones are the difference with the previous. This allows limiting the size of the message since CBOR encodes small numbers more efficiently.</t>
        </list></t>
      <t>A notification is sent when a number of measurements is reached, either:
      <list style="symbols">
          <t>the number of samples in the time series reaches “max-samples”,</t>
          <t>“max-payload” is based on the size of the time series. Since small numbers take less space than large numbers in CBOR, a time series may contain a different number of samples.</t>
          <t>the “time-period” after which the collection should be sent.</t>
        </list></t>
    </list></t>
</list></t>

<t>The read-only <spanx style="verb">active</spanx> flag in both notification types is set when one or more clients observe a notification. Parameters are common to all observations of a particular transducer.</t>

</section>
</section>
<section anchor="starting-notifications" title="Starting Notifications">

<t>A client wishing to initiate a notification MAY first send an iPATCH to set up notification parameters. Parameters set during an active notification are immedialty applied.</t>

<t>Notification is started by sending a FETCH+Observe request on the notification stream resource (<spanx style="verb">/s</spanx>), with a body identifying the SID of the transducer to observe. Multiple clients may observe the same transducer simultaneously; each receives an independent copy of every notification.</t>

</section>
</section>
<section anchor="coreconf-overview-in-the-m2m-context" title="CORECONF Overview in the M2M Context">

<section anchor="coap-methods-mapping" title="CoAP Methods Mapping">

<t>CORECONF defines mappings for all CoAP methods, but this document uses only two:</t>

<t><list style="symbols">
  <t>FETCH is used instead of GET to retrieve values from the YANG Data Model. Unlike GET, FETCH carries a body specifying the exact SIDs to retrieve, enabling precise and bandwidth-efficient queries. Combined with the CoAP Observe option, FETCH also serves to subscribe to notification streams.</t>
  <t>iPATCH is used instead of PUT or POST to modify quantities and notification parameters. It supports partial updates: only the specified nodes are modified, leaving others unchanged. Setting a node to an empty value with iPATCH is the preferred way to clear a parameter, making DELETE unnecessary for datastore modifications.</t>
</list></t>

<t>The recommended CoAP Content-Formats for all exchanges are:</t>

<t><list style="symbols">
  <t>Content-Format 141 (<spanx style="verb">application/yang-fetch+cbor</spanx>) for FETCH request bodies, which carry the list of SIDs to retrieve.</t>
  <t>Content-Format 142 (<spanx style="verb">application/yang-data+cbor;id=sid</spanx>) for all response bodies and iPATCH payloads, where data nodes are identified by their SID.</t>
</list></t>

<t>Using these two content formats ensures maximum interoperability with CORECONF implementations and keeps the payloads as compact as possible. Limiting exchanges to a small number of well-known packet formats also benefits SCHC compression <xref target="RFC8724"/>: the fewer distinct header patterns in use, the more efficiently SCHC rules can compress the CoAP headers, reducing overhead on the most constrained links.</t>

<t>FETCH and iPATCH requests MUST be sent as Non-Confirmable (NON) CoAP messages.
This leaves the application free to implement its own retransmission strategy
and timer management, which is essential on constrained networks where the
default CoAP confirmable retransmission behavior may be inappropriate or
wasteful.</t>

<t>For notification streams (Observe), Confirmable (CON) messages MAY be used.
A CON notification allows the server to detect that the observer is no longer
reachable when no ACK is received, and to cancel the Observe subscription
accordingly. A RST response from the client is also a valid way to signal that
the subscription should be terminated.</t>

</section>
</section>
<section anchor="coreconf-traffic" title="CORECONF Traffic">

<t>The following examples show some CoAP messages between a client and a device (the CoAP server).
In the example, the device is an ATMOS41 weather station, able to measure 12 parameters. An identity is associated with each parameter and a unique SID, as illustrated in <xref target="fig-identity-excerpt"/>:</t>

<figure title="Excerpt of YANG identity definitions for the ATMOS41 transducers (see Appendix for the complete module)" anchor="fig-identity-excerpt"><artwork align="left"><![CDATA[
  identity solar-radiation {
    base transducer-type;
    description "Solar radiation measurement (W/m2).";
  }

  identity precipitation {
    base transducer-type;
    description "Precipitation measurement (mm).";
  }

  identity air-temperature {
    base transducer-type;
    description "Air temperature measurement (°C).";
  }
]]></artwork></figure>

<section anchor="resource-discovery" title="Resource Discovery">

<t>The client does not know the transducers managed by the device. It sends a FETCH on “/transducers/transducer” with a depth of 0, as shown in <xref target="fig-resource-discovery"/>.</t>

<figure title="Resource discovery: FETCH request and response" anchor="fig-resource-discovery"><artwork align="left"><![CDATA[
CoAP Request:
  Non-Confirmable, FETCH, MID:47709
    Token: 8ed4
    Opt #1: Uri-Path: c
    Opt #2: Content-Format: 141 (application/yang-fetch+cbor)
    Opt #3: Uri-Query: d=0
    Opt #4: Accept: 142 (application/yang-data+cbor;id=sid)

  Payload: 5 bytes
    1A 000186DF  # unsigned(100063) : /transducers/transducer

CoAP Response:
  Non-Confirmable, 2.05 Content, MID:39441
    Token: 8ed4
    Opt #1: Content-Format: 142 (application/yang-data+cbor;id=sid)

  Payload: 220 bytes
    {100063:
      [{33: 100008, 1: 0, 17: 1, 34: "W/m2"},
       {33: 100006, 1: 0, 17: 3, 34: "mm"},
       {33: 100009, 1: 0, 17: 0, 34: ""},
       {33: 100002, 1: 0, 17: 1, 34: "km"},
       {33: 100013, 1: 0, 17: 1, 34: "deg"},
       {33: 100015, 1: 0, 17: 2, 34: "m/s"},
       {33: 100014, 1: 0, 17: 2, 34: "m/s"},
       {33: 100010, 1: 0, 17: 1, 34: "deg"},
       {33: 100001, 1: 0, 17: 1, 34: "degC"},
       {33: 100012, 1: 0, 17: 3, 34: "kPa"},
       {33: 100003, 1: 0, 17: 2, 34: "kPa"},
       {33: 100007, 1: 0, 17: 1, 34: "%RH"}]}
]]></artwork></figure>

<t>In the request, the payload <spanx style="verb">1A 000186DF</spanx> is the CBOR encoding of the unsigned integer 100063, which is the SID of “/transducers/transducer”. In the response, the outer key 100063 identifies the list, and each entry is a CBOR map whose keys are delta SIDs relative to the list SID, as defined in <xref target="RFC9254"/>. The values encode the transducer type (as an identity SID), instance id, precision, and unit string.</t>

<t>The client may translate the identityref values to the names defined in the YANG module. <xref target="fig-transducer-list"/> shows the resulting transducer table:</t>

<figure title="Decoded transducer list from resource discovery response" anchor="fig-transducer-list"><artwork align="left"><![CDATA[
  1  solar-radiation      W/m2  [type='solar-radiation'][id='0']
  2  precipitation        mm    [type='precipitation'][id='0']
  3  strike-count               [type='strike-count'][id='0']
  4  average-distance     km    [type='average-distance'][id='0']
  5  wind-direction       deg   [type='wind-direction'][id='0']
  6  wind-speed           m/s   [type='wind-speed'][id='0']
  7  wind-gust            m/s   [type='wind-gust'][id='0']
  8  tilt                 deg   [type='tilt'][id='0']
  9  air-temperature      degC  [type='air-temperature'][id='0']
 10  vapor-pressure       kPa   [type='vapor-pressure'][id='0']
 11  barometric-pressure  kPa   [type='barometric-pressure'][id='0']
 12  relative-humidity    %RH   [type='relative-humidity'][id='0']
]]></artwork></figure>

</section>
<section anchor="querying-a-quantity" title="Querying a quantity">

<t>A specific quantity may be requested through a FETCH. <xref target="fig-query-value"/> shows the exchange for the current value of air-temperature.</t>

<figure title="FETCH request and response for air-temperature current value" anchor="fig-query-value"><artwork align="left"><![CDATA[
CoAP Request:
  Non-Confirmable, FETCH, MID:47710
    Token: 8ed5
    Opt #1: Uri-Path: c
    Opt #2: Content-Format: 141 (application/yang-fetch+cbor)
    Opt #3: Accept: 142 (application/yang-data+cbor;id=sid)

  Payload: 12 bytes
    [100092, 100001, 0]

CoAP Response:
  Non-Confirmable, 2.05 Content, MID:39442
    Token: 8ed5
    Opt #1: Content-Format: 142 (application/yang-data+cbor;id=sid)

  Payload: 8 bytes
    {100092: 112}
]]></artwork></figure>

<t>The FETCH body <spanx style="verb">[100092, 100001, 0]</spanx> is a CORECONF instance-identifier: the first element is the SID of the requested leaf, followed by the list key values identifying the transducer (type=100001 for air-temperature, id=0). The response value 112, combined with precision=1, decodes to 11.2°C.</t>

<t><xref target="fig-query-stats"/> shows the FETCH for the full statistics table of the same transducer:</t>

<figure title="FETCH request and response for air-temperature statistics" anchor="fig-query-stats"><artwork align="left"><![CDATA[
CoAP Request:
  Non-Confirmable, FETCH, MID:47711
    Token: 8ed6
    Opt #1: Uri-Path: c
    Opt #2: Content-Format: 141 (application/yang-fetch+cbor)
    Opt #3: Accept: 142 (application/yang-data+cbor;id=sid)

  Payload: 12 bytes
    [100082, 100001, 0]

CoAP Response:
  Non-Confirmable, 2.05 Content, MID:39443
    Token: 8ed6
    Opt #1: Content-Format: 142 (application/yang-data+cbor;id=sid)

  Payload: 24 bytes
    {100082: {4: 79, 1: 119, 2: 94, 3: 103, 6: 12, 5: 53}}
]]></artwork></figure>

<t>The FETCH body <spanx style="verb">[100082, 100001, 0]</spanx> requests the quantity sub-tree (SID 100082) for air-temperature (100001), instance 0. In the response, the inner map keys are delta SIDs relative to 100082, each encoding the difference between consecutive SIDs to minimize CBOR size. The six values correspond to the statistics leaves: min, max, mean, median, stdev, and sample-count, all scaled by the transducer precision.</t>

<t>The client decodes the response and displays the statistics as shown in <xref target="fig-stats-display"/>:</t>

<figure title="Decoded statistics for air-temperature" anchor="fig-stats-display"><artwork align="left"><![CDATA[
  [9] Statistics — air-temperature:
    min:     7.9 degC
    max:     11.9 degC
    mean:    9.4 degC
    median:  10.3 degC
    σ:       1.2 degC
    n:       53
]]></artwork></figure>

</section>
<section anchor="notification" title="Notification">

<t>The client first sends an iPATCH to configure the history notification parameters for the solar-radiation transducer, as shown in <xref target="fig-notification-config"/>.</t>

<figure title="iPATCH to configure history notification parameters for solar-radiation" anchor="fig-notification-config"><artwork align="left"><![CDATA[
CoAP Request:
  Non-Confirmable, iPATCH, MID:47712
    Token: 8ed7
    Opt #1: Uri-Path: c
    Opt #2: Content-Format: 142 (application/yang-data+cbor;id=sid)

  Payload: 28 bytes
    {[100066, 100008, 0]: {100066: {6: 5000, 4: 3, 2: 1}}}

CoAP Response:
  Non-Confirmable, 2.04 Changed, MID:39444
    Token: 8ed7
]]></artwork></figure>

<t>The iPATCH key <spanx style="verb">[100066, 100008, 0]</spanx> is an instance-identifier targeting the notification-parameters node (SID 100066) for solar-radiation (SID 100008), instance 0. The value <spanx style="verb">{100066: {6: 5000, 4: 3, 2: 1}}</spanx> sets three history parameters using delta SIDs relative to 100066: step=5000 ms (one sample every 5 seconds), max-samples=3, and encoding=delta (value 1).</t>

<t>The client then initiates an Observe subscription with a FETCH on the notification stream resource <spanx style="verb">/s</spanx>, as shown in <xref target="fig-notification-observe"/>.</t>

<figure title="FETCH+Observe subscription on `/s` and history notification for solar-radiation" anchor="fig-notification-observe"><artwork align="left"><![CDATA[
CoAP Request:
  Non-Confirmable, FETCH, MID:47713
    Token: 8ed8
    Opt #1: Observe: 0
    Opt #2: Uri-Path: s
    Opt #3: Content-Format: 141 (application/yang-fetch+cbor)
    Opt #4: Accept: 142 (application/yang-data+cbor;id=sid)

  Payload: 12 bytes
    [100044, 100008, 0]

CoAP Response (subscription acknowledgment):
  Non-Confirmable, 2.05 Content, MID:39445
    Token: 8ed8
    Opt #1: Observe: 0
    Opt #2: Content-Format: 142 (application/yang-data+cbor;id=sid)

  Payload: 1 byte
    {}

CoAP Notification:
  Non-Confirmable, 2.05 Content, MID:39446
    Token: 8ed8
    Opt #1: Observe: 1
    Opt #2: Content-Format: 142 (application/yang-data+cbor;id=sid)

  Payload: 43 bytes
    {100042: {2: [{6: 100008, 1: 0, 7: [1043, 82, 82, 362, 316, 318, 226, 94, -147, -16]}]}}
]]></artwork></figure>

<t>The FETCH body <spanx style="verb">[100044, 100008, 0]</spanx> subscribes to the history time-series stream (SID 100044) for solar-radiation. The server acknowledges with an empty map <spanx style="verb">{}</spanx>. In the notification, the outer key 100042 identifies the history notification; the inner structure uses delta SIDs to encode type, id, and the values list. The values <spanx style="verb">[1043, 82, 82, ...]</spanx> use delta encoding: 1043 is the absolute reference (104.3 W/m²), and each subsequent value is the difference from the previous one, yielding a compact representation of slowly-varying measurements.</t>

<t>The client decodes the delta-encoded time-series values and displays the result as shown in <xref target="fig-notification-decoded"/>:</t>

<figure title="Decoded solar-radiation time-series from history notification" anchor="fig-notification-decoded"><artwork align="left"><![CDATA[
  [1] solar-radiation: 104.3 W/m2  (16:50:29)
  [1] solar-radiation: 112.5 W/m2  (16:52:29)
  [1] solar-radiation: 120.7 W/m2  (16:54:29)
  [1] solar-radiation: 156.9 W/m2  (16:56:29)
  [1] solar-radiation: 188.5 W/m2  (16:58:29)
  [1] solar-radiation: 220.3 W/m2  (17:00:29)
  [1] solar-radiation: 242.9 W/m2  (17:02:29)
  [1] solar-radiation: 252.3 W/m2  (17:04:29)
  [1] solar-radiation: 237.6 W/m2  (17:06:29)
  [1] solar-radiation: 236.0 W/m2  (17:08:29)
]]></artwork></figure>

</section>
</section>
<section anchor="sid-allocation" title="SID Allocation">

<t>The SID range 100000–100399 is used as an example throughout this document.
Official values MUST be assigned by IANA prior to publication.
The complete SID file is provided in <xref target="fig-sid-csv"/>.</t>

</section>
<section anchor="security-considerations" title="Security Considerations">

<t>CORECONF operations over CoAP MUST be secured using either DTLS <xref target="RFC6347"/>
or OSCORE <xref target="RFC8613"/>. In M2M scenarios where a central manager is absent,
the trust model requires particular attention.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<section anchor="yang-module-registration" title="YANG Module Registration">

<t>This document registers the following YANG module in the “YANG Module Names”
registry <xref target="RFC7950"/>:</t>

<texttable>
      <ttcol align='center'>Name</ttcol>
      <ttcol align='center'>Namespace</ttcol>
      <ttcol align='center'>Prefix</ttcol>
      <ttcol align='center'>Reference</ttcol>
      <c>coreconf-m2m</c>
      <c>urn:ietf:params:xml:ns:yang:coreconf-m2m</c>
      <c>cm2m</c>
      <c>This document</c>
</texttable>

</section>
<section anchor="sid-range-allocation" title="SID Range Allocation">

<t>This document requests the SID range starting at entry-point TBD with a size of 100,
as defined in <xref target="I-D.ietf-core-sid"/>.</t>

<t>Transducer identites  MUST be sperated from this document and defined in anjother YANG module.</t>

</section>
</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC7252;
&RFC7950;
&RFC8610;
&RFC8724;
&RFC8824;
&RFC9254;
&RFC9363;
&I-D.ietf-core-comi;
&RFC2119;
&RFC8174;


    </references>

    <references title='Informative References'>

&RFC8376;
&RFC9179;
&RFC8949;
&RFC7396;
&RFC8428;
&RFC9232;
&RFC8639;
&I-D.ietf-core-sid;
&I-D.ietf-core-yang-cbor;
&I-D.gudi-t2trg-senml-as-coreconf;
&I-D.birkholz-yang-core-telemetry;
<reference anchor="OMA-LwM2M" target="https://www.openmobilealliance.org/release/LightweightM2M/V1_2-20201110-A/OMA-TS-LightweightM2M_Core-V1_2-20201110-A.pdf">
  <front>
    <title>Lightweight Machine to Machine Technical Specification: Core</title>
    <author >
      <organization></organization>
    </author>
    <date year="2020"/>
  </front>
</reference>
&RFC7228;
&RFC6347;
&RFC8613;


    </references>


<section anchor="annex-yang" title="Complete YANG Module">

<figure title="Complete coreconf-m2m YANG module" anchor="fig-yang-module"><artwork align="left"><![CDATA[
module coreconf-m2m {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:coreconf-m2m";
  prefix m2m;

  import ietf-geo-location {
    prefix geo;
    reference "RFC 9179";
  }

  organization "METER Group, Inc.";
  contact
    "Technical Support
     https://www.metergroup.com/";

  description
    "YANG data model for a generic M2M CoMI weather station.
     This model defines the operational state data for sensor readings.";

  revision 2026-05-07 {
    description
      "Fix typedef naming conflict (transducer-type renamed to transducer-nature)
       and missing closing brace in enum unknown.";
  }

  revision 2026-03-29 {
    description
      "Move container statistics inside container quantity.";
  }

  revision 2026-03-25 {
    description
      "Add dampening leaf to sensor-alert notification parameters.";
  }

  revision 2026-03-23 {
    description
      "Make active leaf config false (reflects observe subscription state).
       Add must constraint t-min < t-max on sensor-alert.
       Add timestamp-source enum in quantity to indicate timestamp origin
       (source = timestamped by the sensor, receiver = timestamped on receipt).";
  }

  revision 2026-03-22 {
    description
      "Rename branch measurement to transducer
       (container, list, identity, notification).";
  }

  revision 2026-03-08 {
    description
      "Module renamed to coreconf-m2m for generic M2M CoMI use.";
  }

  revision 2026-03-02 {
    description
      "Major update for CoMI compliance:
       - Added multi-sensor support (id key).
       - Measurements are now configurable (writable).
       - Added standard deviation (stdev).
       - Added uptime to state.
       - Removed tilt from fixed state (now a measurement type).
       - Removed legacy RPCs (subscribe, get-stats) in favor of CoMI/Observe.
       - Cleaned up measurement lists and notifications.";
  }

  revision 2026-02-27 {
    description
      "Initial revision for testing.";
  }

  identity transducer-type {
    description
      "Base identity for all measurement types.";
  }

  identity solar-radiation {
    base transducer-type;
    description "Solar radiation measurement (W/m2).";
  }

  identity precipitation {
    base transducer-type;
    description "Precipitation measurement (mm).";
  }

  identity air-temperature {
    base transducer-type;
    description "Air temperature measurement (°C).";
  }

  identity relative-humidity {
    base transducer-type;
    description "Relative humidity measurement (%).";
  }

  identity barometric-pressure {
    base transducer-type;
    description "Barometric pressure measurement (kPa).";
  }

  identity vapor-pressure {
    base transducer-type;
    description "Vapor pressure measurement (kPa).";
  }

  identity wind-speed {
    base transducer-type;
    description "Horizontal wind speed measurement (m/s).";
  }

  identity wind-direction {
    base transducer-type;
    description "Wind direction measurement (degrees).";
  }

  identity wind-gust {
    base transducer-type;
    description "Wind gust measurement (m/s).";
  }

  identity strike-count {
    base transducer-type;
    description "Lightning strike count.";
  }

  identity average-distance {
    base transducer-type;
    description "Average lightning distance (km).";
  }

  identity tilt {
    base transducer-type;
    description "Sensor tilt measurement (degrees).";
  }

  identity x-orientation {
    base transducer-type;
    description "X-axis orientation (raw accelerometer data).";
  }

  identity y-orientation {
    base transducer-type;
    description "Y-axis orientation (raw accelerometer data).";
  }

  identity north-wind-speed {
    base transducer-type;
    description "North wind speed component (m/s).";
  }

  identity east-wind-speed {
    base transducer-type;
    description "East wind speed component (m/s).";
  }

  typedef encoding-type {
    type enumeration {
      enum direct {
        value 0;
        description "Value is encoded directly as an integer.";
      }
      enum delta {
        value 1;
        description "Value is encoded as a delta from the previous value.";
      }
    }
    description "Encoding used for the measurement values.";
  }

  typedef transducer-nature {
    type enumeration {
      enum sensor {
        value 0;
        description "Physical sensor; quantity can be read.";
      }
      enum actuator {
        value 1;
        description "Actuator; quantity can be written.";
      }
      enum sensor-actuator {
        value 2;
        description "Both sensor and actuator.";
      }
      enum internal {
        value 3;
        description "Internal operational parameter.";
      }
      enum unknown {
        value 255;
        description "Unknown.";
      }
    }
    description "Nature of a transducer.";
  }

  grouping transducers-list {
    list time-series {
      key "type id";
      description
        "List of measurements included in this notification.";
      leaf type {
        type identityref {
          base transducer-type;
        }
        description "The type of measurement.";
      }
      leaf id {
        type uint8;
        description "Instance identifier for this measurement type.";
      }
      leaf-list values {
        type int64;
        ordered-by user;
        description "List of encoded measurement values.";
      }
    }
  }

  container state {
    config false;
    description "Operational state data of the weather station.";
    leaf uptime {
      type uint64;
      units "seconds";
      description "Time elapsed since the last boot.";
    }
  }

  container characteristics {
    description "Static descriptive information about the device.";
    leaf name {
      type string;
      description "Human-readable name of the device.";
    }
    leaf version {
      type string;
      description "Firmware or software version of the device.";
    }
    leaf identifier {
      type string;
      description "Unique identifier of the device (e.g., serial number or EUI).";
    }
    uses geo:geo-location {
      refine "geo-location/reference-frame/geodetic-system/geodetic-datum" {
        default "wgs-84";
      }
    }
  }

  container transducers {
    description
      "Current measurement values accessible via polling or configuration.";
    list transducer {
      key "type id";
      description "List of available measurements.";
      leaf type {
        type identityref {
          base transducer-type;
        }
        description "The type of measurement.";
      }
      leaf id {
        type uint8;
        description
          "Instance identifier to distinguish multiple sensors of the same type.";
      }
      leaf unit {
        type string;
        description "Unit of measurement (e.g., 'C', 'm/s', '%').";
      }
      leaf nature {
        type transducer-nature;
        description
          "Indicates whether this is a sensor, actuator, computed value,
           or internal parameter.";
      }
      leaf precision {
        type int8;
        default 1;
        description
          "Number of decimal places. Real value = raw_value * 10^-precision.";
      }
      container quantity {
        config false;
        description "Operational state for this transducer.";
        leaf value {
          type int64;
          description "The current raw integer value of the transducer.";
        }
        leaf timestamp {
          type uint64;
          units "seconds";
          description "Epoch timestamp (seconds) of the last transducer update.";
        }
        leaf u-timestamp {
          type uint32;
          units "microseconds";
          description "Microsecond fraction of the timestamp (0..999999).";
        }
        leaf timestamp-source {
          type enumeration {
            enum source {
              value 0;
              description "Timestamp generated by the sensor itself.";
            }
            enum receiver {
              value 1;
              description "Timestamp applied by the receiver upon arrival.";
            }
          }
          description "Origin of the timestamp associated with this measurement.";
        }
        container statistics {
          config false;
          description "Read-only accumulated statistics for this measurement.";
          leaf min {
            type int64;
            description "Minimum value observed since last reset.";
          }
          leaf max {
            type int64;
            description "Maximum value observed since last reset.";
          }
          leaf mean {
            type int64;
            description "Mean value observed since last reset.";
          }
          leaf median {
            type int64;
            description "Estimated median value observed since last reset.";
          }
          leaf stdev {
            type uint64;
            description "Standard deviation since last reset.";
          }
          leaf sample-count {
            type uint64;
            description "Number of samples used for statistics calculation.";
          }
        }
      }
      container notification-parameters {
        description
          "Configuration parameters controlling how this transducer
           is reported in CoMI notification streams.";
        container history {
          description "Parameters for the history time-series stream.";
          leaf active {
            type boolean;
            config false;
            description
              "True when a FETCH+Observe subscription is active on `/s`
               for this transducer history stream.";
          }
          leaf step {
            type uint32;
            units "milliseconds";
            description "Time interval between samples in the notification stream.";
          }
          leaf precision {
            type uint8;
            default 1;
            description
              "Number of decimal places for values encoded in time-series
               notifications.";
          }
          leaf max-samples {
            type uint32;
            description "Maximum number of samples kept in the time-series buffer.";
          }
          leaf time-period {
            type uint32;
            units "seconds";
            description "Duration of the time window covered by the history buffer.";
          }
          leaf encoding {
            type encoding-type;
            default "delta";
            description "Encoding used for the values list in notifications.";
          }
          leaf max-payload {
            type uint32;
            units "bytes";
            description
              "Maximum payload size in bytes. When exceeded, the notification
               is sent early. 0 means no size limit.";
          }
        }
        container sensor-alert {
          description "Parameters for threshold-based sensor-alert notifications.";
          must "not(t-min and t-max) or t-min < t-max" {
            error-message "t-min must be strictly less than t-max.";
          }
          leaf active {
            type boolean;
            config false;
            description
              "True when a FETCH+Observe subscription is active on `/s`
               for this transducer sensor-alert stream.";
          }
          leaf t-min {
            type int32;
            description "Minimum threshold. Alert raised when value falls below.";
          }
          leaf t-max {
            type int32;
            description "Maximum threshold. Alert raised when value exceeds.";
          }
          leaf hysteresis {
            type uint8 {
              range "0..100";
            }
            default 5;
            units "percent";
            description
              "Hysteresis applied to threshold crossings, as a percentage.";
          }
          leaf dampening {
            type uint32;
            default 0;
            units "milliseconds";
            description
              "Minimum time between two consecutive sensor-alert notifications.
               0 means no dampening.";
          }
        }
      }
      action reset-stats {
        description
          "Reset accumulated statistics for this transducer.";
      }
    }
  }

  rpc reset-stats {
    description
      "Reset accumulated statistics for all transducers.";
  }

  notification history {
    description
      "History time-series notification sent to Observe subscribers.";
    leaf last {
      type boolean;
      default "false";
      description "True if this is the last notification for the current series.";
    }
    uses transducers-list {
      augment "time-series" {
        container internal {
          description "Internal operational state for this time-series entry.";
          leaf last-update {
            type uint64;
            units "seconds";
            description "Epoch timestamp of the last sample appended.";
          }
          leaf start-time {
            type uint64;
            units "seconds";
            description "Epoch timestamp of the first sample.";
          }
          leaf messages-sent {
            type uint64;
            description "Number of notification messages sent since subscription.";
          }
        }
      }
    }
  }

  notification sensor-alert {
    description "Alert notification when a value exceeds a threshold.";
    list target {
      key "type id";
      description "Measurement instances that triggered this alert.";
      leaf type {
        type identityref {
          base transducer-type;
        }
      }
      leaf id {
        type uint8;
      }
      leaf value {
        type int64;
        description "The measurement value that triggered this alert.";
      }
    }
  }
}
]]></artwork></figure>

</section>
<section anchor="sid-file-csv" title="SID File (CSV)">

<t>The following table lists the SID assignments for the coreconf-m2m module
(assignment range: 100000–100399, revision 2026-03-29).</t>

<figure title="SID assignments for coreconf-m2m (CSV format)" anchor="fig-sid-csv"><artwork align="left"><![CDATA[
SID,Namespace,Identifier
100000,module,coreconf-m2m
100001,identity,air-temperature
100002,identity,average-distance
100003,identity,barometric-pressure
100004,identity,east-wind-speed
100005,identity,north-wind-speed
100006,identity,precipitation
100007,identity,relative-humidity
100008,identity,solar-radiation
100009,identity,strike-count
100010,identity,tilt
100011,identity,transducer-type
100012,identity,vapor-pressure
100013,identity,wind-direction
100014,identity,wind-gust
100015,identity,wind-speed
100016,identity,x-orientation
100017,identity,y-orientation
100018,data,/coreconf-m2m:characteristics
100019,data,/coreconf-m2m:characteristics/geo-location
100020,data,/coreconf-m2m:characteristics/geo-location/height
100021,data,/coreconf-m2m:characteristics/geo-location/latitude
100022,data,/coreconf-m2m:characteristics/geo-location/longitude
100023,data,/coreconf-m2m:characteristics/geo-location/reference-frame
100024,data,/coreconf-m2m:characteristics/geo-location/reference-frame/alternate-system
100025,data,/coreconf-m2m:characteristics/geo-location/reference-frame/astronomical-body
100026,data,/coreconf-m2m:characteristics/geo-location/reference-frame/geodetic-system
100027,data,/coreconf-m2m:characteristics/geo-location/reference-frame/geodetic-system/coord-accuracy
100028,data,/coreconf-m2m:characteristics/geo-location/reference-frame/geodetic-system/geodetic-datum
100029,data,/coreconf-m2m:characteristics/geo-location/reference-frame/geodetic-system/height-accuracy
100030,data,/coreconf-m2m:characteristics/geo-location/timestamp
100031,data,/coreconf-m2m:characteristics/geo-location/valid-until
100032,data,/coreconf-m2m:characteristics/geo-location/velocity
100033,data,/coreconf-m2m:characteristics/geo-location/velocity/v-east
100034,data,/coreconf-m2m:characteristics/geo-location/velocity/v-north
100035,data,/coreconf-m2m:characteristics/geo-location/velocity/v-up
100036,data,/coreconf-m2m:characteristics/geo-location/x
100037,data,/coreconf-m2m:characteristics/geo-location/y
100038,data,/coreconf-m2m:characteristics/geo-location/z
100039,data,/coreconf-m2m:characteristics/identifier
100040,data,/coreconf-m2m:characteristics/name
100041,data,/coreconf-m2m:characteristics/version
100042,data,/coreconf-m2m:history
100043,data,/coreconf-m2m:history/last
100044,data,/coreconf-m2m:history/time-series
100045,data,/coreconf-m2m:history/time-series/id
100046,data,/coreconf-m2m:history/time-series/internal
100047,data,/coreconf-m2m:history/time-series/internal/last-update
100048,data,/coreconf-m2m:history/time-series/internal/messages-sent
100049,data,/coreconf-m2m:history/time-series/internal/start-time
100050,data,/coreconf-m2m:history/time-series/type
100051,data,/coreconf-m2m:history/time-series/values
100052,data,/coreconf-m2m:reset-stats
100053,data,/coreconf-m2m:reset-stats/input
100054,data,/coreconf-m2m:reset-stats/output
100055,data,/coreconf-m2m:sensor-alert
100056,data,/coreconf-m2m:sensor-alert/target
100057,data,/coreconf-m2m:sensor-alert/target/id
100058,data,/coreconf-m2m:sensor-alert/target/type
100059,data,/coreconf-m2m:sensor-alert/target/value
100060,data,/coreconf-m2m:state
100061,data,/coreconf-m2m:state/uptime
100062,data,/coreconf-m2m:transducers
100063,data,/coreconf-m2m:transducers/transducer
100064,data,/coreconf-m2m:transducers/transducer/id
100065,data,/coreconf-m2m:transducers/transducer/nature
100066,data,/coreconf-m2m:transducers/transducer/notification-parameters
100067,data,/coreconf-m2m:transducers/transducer/notification-parameters/history
100068,data,/coreconf-m2m:transducers/transducer/notification-parameters/history/active
100069,data,/coreconf-m2m:transducers/transducer/notification-parameters/history/encoding
100070,data,/coreconf-m2m:transducers/transducer/notification-parameters/history/max-payload
100071,data,/coreconf-m2m:transducers/transducer/notification-parameters/history/max-samples
100072,data,/coreconf-m2m:transducers/transducer/notification-parameters/history/precision
100073,data,/coreconf-m2m:transducers/transducer/notification-parameters/history/step
100074,data,/coreconf-m2m:transducers/transducer/notification-parameters/history/time-period
100075,data,/coreconf-m2m:transducers/transducer/notification-parameters/sensor-alert
100076,data,/coreconf-m2m:transducers/transducer/notification-parameters/sensor-alert/active
100077,data,/coreconf-m2m:transducers/transducer/notification-parameters/sensor-alert/dampening
100078,data,/coreconf-m2m:transducers/transducer/notification-parameters/sensor-alert/hysteresis
100079,data,/coreconf-m2m:transducers/transducer/notification-parameters/sensor-alert/t-max
100080,data,/coreconf-m2m:transducers/transducer/notification-parameters/sensor-alert/t-min
100081,data,/coreconf-m2m:transducers/transducer/precision
100082,data,/coreconf-m2m:transducers/transducer/quantity
100083,data,/coreconf-m2m:transducers/transducer/quantity/statistics
100084,data,/coreconf-m2m:transducers/transducer/quantity/statistics/max
100085,data,/coreconf-m2m:transducers/transducer/quantity/statistics/mean
100086,data,/coreconf-m2m:transducers/transducer/quantity/statistics/median
100087,data,/coreconf-m2m:transducers/transducer/quantity/statistics/min
100088,data,/coreconf-m2m:transducers/transducer/quantity/statistics/sample-count
100089,data,/coreconf-m2m:transducers/transducer/quantity/statistics/stdev
100090,data,/coreconf-m2m:transducers/transducer/quantity/timestamp
100091,data,/coreconf-m2m:transducers/transducer/quantity/timestamp-source
100092,data,/coreconf-m2m:transducers/transducer/quantity/u-timestamp
100093,data,/coreconf-m2m:transducers/transducer/quantity/value
100094,data,/coreconf-m2m:transducers/transducer/reset-stats
100095,data,/coreconf-m2m:transducers/transducer/reset-stats/input
100096,data,/coreconf-m2m:transducers/transducer/reset-stats/output
100097,data,/coreconf-m2m:transducers/transducer/type
100098,data,/coreconf-m2m:transducers/transducer/unit
]]></artwork></figure>

</section>
<section numbered="false" anchor="acknowledgments" title="Acknowledgments">
<t>This work has been supported by the SCHC Chair from IMT Atlantique and Afnic.</t>

</section>


  </back>

<!-- ##markdown-source:
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
GlJyTwgT4XxxDLALFshyucwYZYUnVIkkNwcd2GX9DeOGDQnqD657bD+7VV5B
t2TEESxz79jdH/lnvN3xxbDgNn7CB906yH/Jx0B99YOQ3tAPdgLtr37qHD+m
xewOXRqUWTCt6Hc9yGOTOSj+1PnecT0Ap6c3SbylutfdtjyFbSqYFPHLd2fb
/goox+Ba5cOAA51c5vi+Xsv9csf40TtTZNE78OVEwVl2SqwgObN/A7ouZy2H
9nTZjdbdddk52nucWtzr6Cv9EKdysaJJj6RhShVffH1Inn1HSBi/k0c8xLZt
eOWpXNvyhuQ2STPCMy9T4f8ZzuysLMij6cFF8ziafXLNPJVer54eXhJd9qwt
yieHJkHUpaUmgm9Pv4X/gOqN/3zz7faKKT3d0EzaUB6fABVdo/LuhstDk8zy
yptrBaptC+kSwradgWJ6BVsUozXKEC3eltdsCjrvIJn+woqlu4vXtiS6roCO
xWLLbnypzPPdz2Ow4v6Jf/8DFjzv2JT6xjqbARZnrU1J2DjhpjQ0+kBdRXMA
w4tzCSok/wPko29roZ2qL26ba37+RQJ30gd/ehvhaCxh2VjDCpncWN7LRY71
JM3QWzpFVy+NJLTDxtiXv2aZzutI4YXuDgILdatar17tuW1lHyCv17qOt3rd
7jH9bD8FnDq81FhsyJ7jH7aAmt3wp2HbhZDCrJWCLeZpUBOSkrLc3ZY/zENz
FSZ0FV5H/4nrkOKVehVm1OWCCl0WKQy3bjUPq47sgqJxzUNq1uv1lfHwyQWj
ru7Ow8TfcFDr0qgg05czeZu1dgFl3YIEhTCS6YM9zBAaWMxv4QkL4FCO1oqJ
3qgCuT/hQ2Py5ONnTS5V8L5wcpV83tax35dOjXeRPmfyl3C4MzpqGePLFkIR
w9A6mty4aa7U44+bzu3cTPusJbxu1FY2zjCHDsZJhglqvkPAX5D+rSmaV11q
cVX4oL5w6qrT7iUU9+3MGyoy5Qlsd7epftGZ/RsUdg4WNXW2ZZeuky0/reIg
b5q3w1YnjAc4hyRYBE5OHgrzj24VV1sFQgLjVbFUugL3mmR7VCZ5NZJ2Xxsn
pBqZzYY2GCAUtViFpL4y4KgDcMohdSDkVjAF6fW10Vq58MC5P7LikArsLfuo
vqaGLvzI4azSifmhHrfkDfvnLFLVjycQ11+5L+fW1VMPJCg8mpXZP6iFeevA
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
AA==

-->

</rfc>

