<!DOCTYPE html>
  
  
  
  
   <html class="no-js"> 

  <head lang="en-us">
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1">
    <meta http-equiv="X-UA-Compatible" content="IE=10" />
    <title>XDK110 - Eclipse Mita</title>
    <meta name="generator" content="Hugo 0.42.1" />

    
    <meta name="description" content="The documentation of Eclipse Mita.">
    
    <link rel="canonical" href="../../mita/platforms/xdk110/">
    

    <meta property="og:url" content="/mita/platforms/xdk110/">
    <meta property="og:title" content="Eclipse Mita">
    <meta property="og:image" content="/mita/images/mita.svg">
    <meta name="apple-mobile-web-app-title" content="Eclipse Mita">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">

    <link rel="shortcut icon" type="image/x-icon" href="../../mita/images/favicon.ico">
    <link rel="icon" type="image/x-icon" href="../../mita/images/favicon.ico">

    <style>
      @font-face {
        font-family: 'Icon';
        src: url('/mita/fonts/icon.eot');
        src: url('/mita/fonts/icon.eot')
               format('embedded-opentype'),
             url('/mita/fonts/icon.woff')
               format('woff'),
             url('/mita/fonts/icon.ttf')
               format('truetype'),
             url('/mita/fonts/icon.svg')
               format('svg');
        font-weight: normal;
        font-style: normal;
      }
    </style>

    <link rel="stylesheet" href="../../mita/stylesheets/application.css">
    <link rel="stylesheet" href="../../mita/stylesheets/temporary.css">
    <link rel="stylesheet" href="../../mita/stylesheets/palettes.css">
    <link rel="stylesheet" href="../../mita/stylesheets/highlight/highlight.css">

    
    
    
    <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Ubuntu:400,700|Ubuntu&#43;Mono">
    <style>
      body, input {
        font-family: 'Ubuntu', Helvetica, Arial, sans-serif;
      }
      pre, code {
        font-family: 'Ubuntu Mono', 'Courier New', 'Courier', monospace;
      }
    </style>

    
    <link rel="stylesheet" href="../../mita/css/custom.css">
    
    <script src="../../mita/javascripts/modernizr.js"></script>

    

  </head>
  <body class="palette-primary-blue-grey palette-accent-light-blue">




<div class="backdrop">
	<div class="backdrop-paper"></div>
</div>

<input class="toggle" type="checkbox" id="toggle-drawer">
<input class="toggle" type="checkbox" id="toggle-search">
<label class="toggle-button overlay" for="toggle-drawer"></label>

<header class="header">
	<nav aria-label="Header">
  <div class="bar default">
    <div class="button button-menu" role="button" aria-label="Menu">
      <label class="toggle-button icon icon-menu" for="toggle-drawer">
        <span></span>
      </label>
    </div>
    <div class="stretch">
      <div class="title">
        XDK110
      </div>
    </div>

    
    <div class="button button-twitter" role="button" aria-label="Twitter">
       <a href="https://twitter.com/eclipse_mita" title="@eclipse_mita on Twitter" target="_blank" class="toggle-button icon icon-twitter"></a>
    </div>
    

    
    <div class="button button-github" role="button" aria-label="GitHub">
      <a href="https://github.com/eclipse/mita" title="@eclipse/mita on GitHub" target="_blank" class="toggle-button icon icon-github"></a>
    </div>
    
    
        
  </div>
  <div class="bar search">
    <div class="button button-close" role="button" aria-label="Close">
      <label class="toggle-button icon icon-back" for="toggle-search"></label>
    </div>
    <div class="stretch">
      <div class="field">
        <input class="query" type="text" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck>
      </div>
    </div>
    <div class="button button-reset" role="button" aria-label="Search">
      <button class="toggle-button icon icon-close" id="reset-search"></button>
    </div>
  </div>
</nav>
</header>

<main class="main">
	<div class="drawer">
		<nav aria-label="Navigation">
  <a href="../../mita/" class="project">
    <div class="banner">
      
        <div class="logo">
          <img src="../../mita/images/mita.svg">
        </div>
      
      <div class="name">
        <strong>Eclipse Mita </strong>
        
      </div>
    </div>
  </a>

  <div class="scrollable">
    <div class="wrapper">
      

      <div class="toc">
        
        <ul>
          




<li>
  
    



<a  title="Download" href="http://github.com/eclipse/mita">
	
	Download
</a>



  
</li>



<li>
  
    



<a  title="Concepts" href="../../concepts/">
	
	Concepts
</a>



  
</li>



<li>
  
    <span class="section">Language</span>
    <ul>
      
        
        



<a  title="Introduction" href="../../language/introduction/">
	
	Introduction
</a>



      
        
        



<a  title="Basics" href="../../language/basics/">
	
	Basics
</a>



      
        
        



<a  title="Packages" href="../../language/packages/">
	
	Packages
</a>



      
        
        



<a  title="System Setup" href="../../language/setup/">
	
	System Setup
</a>



      
        
        



<a  title="Types" href="../../language/types/">
	
	Types
</a>



      
        
        



<a  title="Arrays" href="../../language/arrays/">
	
	Arrays
</a>



      
        
        



<a  title="Functions" href="../../language/functions/">
	
	Functions
</a>



      
        
        



<a  title="Foreign Function Interface" href="../../language/foreignfunctioninterface/">
	
	Foreign Function Interface
</a>



      
        
        



<a  title="Events" href="../../language/events/">
	
	Events
</a>



      
        
        



<a  title="Exceptions" href="../../language/exceptions/">
	
	Exceptions
</a>



      
    </ul>
  
</li>



<li>
  
    <span class="section">Platforms</span>
    <ul>
      
        
        



<a  title="XDK110" href="../../platforms/xdk110/">
	
	XDK110
</a>



      
    </ul>
  
</li>


        </ul>
        

        
      </div>
    </div>
  </div>
</nav>

	</div>

	<article class="article">
		<div class="wrapper">
			<h1>XDK110 </h1>

			

<p>The Bosch Cross Domain Development Kit (XDK) is a programmable sensor device for building IoT applications.
It contains a wide range of sensors and means of connectivity, is extensible using its extension bus.
Due to its versatility it also serves as reference platform for Mita.</p>

<p>To learn more about the XDK head over to <a href="http://xdk.io">http://xdk.io</a>.</p>

<h2 id="sensor-environment-bme280">Sensor: environment (BME280)</h2>

<h3 id="configuration-items">Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>power_mode</b> : <span class="kt">BME280_PowerMode</span></pre></div></td>
            <td>Defaults to <i>BME280_PowerMode.Normal</i>. The BME280 power mode</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>standby_time</b> : <span class="kt">uint32</span></pre></div></td>
            <td>The standby time used in normal mode in milliseconds.
            Beware that the value supplied here will be clipped to the nearest valid value.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>temperature_oversampling</b> : <span class="kt">BME280_Oversampling</span></pre></div></td>
            <td>Reduces noise in the temperature measurement by over sampling.
            Higher over sampling settings reduce noise but increase measurement time and power consumption.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>pressure_oversampling</b> : <span class="kt">BME280_Oversampling</span></pre></div></td>
            <td>Reduces noise in the pressure measurement by over sampling.
            Higher over sampling settings reduce noise but increase measurement time and power consumption.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>humidity_oversampling</b> : <span class="kt">BME280_Oversampling</span></pre></div></td>
            <td>Reduces noise in the humidity measurement by over sampling.
            Higher over sampling settings reduce noise but increase measurement time and power consumption.</td>
        </tr>
    </tbody>
</table>

<h4 id="modalities">Modalities</h4>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>temperature</b> : <span class="kt">int32</span></pre></div></td>
            <td>The temperature in milli-celcius</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>pressure</b> : <span class="kt">uint32</span></pre></div></td>
            <td>The pressure in pascal</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>humidity</b> : <span class="kt">float</span></pre></div></td>
            <td>The relative humidity as percentage</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>humidity_fixed_point</b> : <span class="kt">uint32</span></pre></div></td>
            <td>The relative humidity as percentage in Q22.10 integer format.
            Divide this value by 1024 to get the percentage.</td>
        </tr>
    </tbody>
</table>

<h2 id="sensor-accelerometer-bma280">Sensor: accelerometer (BMA280)</h2>

<h3 id="configuration-items-1">Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>range</b> : <span class="kt">BMA280_Range</span></pre></div></td>
            <td>Defaults to <i>BMA280_Range.Range_2G</i>. The range of acceleration we want to measure.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>bandwidth</b> : <span class="kt">BMA280_Bandwidth</span></pre></div></td>
            <td>Defaults to <i>BMA280_Bandwidth.BW_500Hz</i>. The low-pass filter bandwidth used by the BMA.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>any_motion_threshold</b> : <span class="kt">uint32</span></pre></div></td>
            <td>Defaults to <i>20</i>. The threshold of acceleration that has to be crossed before an any motion event is triggered.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>no_motion_threshold</b> : <span class="kt">uint32</span></pre></div></td>
            <td>Defaults to <i>20</i>. The threshold of acceleration that must not be exceeded for a no motion event to be triggered.</td>
        </tr>
    </tbody>
</table>

<h4 id="modalities-1">Modalities</h4>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>x_axis</b> : <span class="kt">int32</span></pre></div></td>
            <td>The X axis of the BMA280</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>y_axis</b> : <span class="kt">int32</span></pre></div></td>
            <td>The Y axis of the BMA280</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>z_axis</b> : <span class="kt">int32</span></pre></div></td>
            <td>The Z axis of the BMA280</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>magnitude</b> : <span class="kt">uint32</span></pre></div></td>
            <td>The L2 norm of the acceleration vector: sqrt(x^2 + y^2 + z^2)</td>
        </tr>
    </tbody>
</table>

<h4 id="events">Events</h4>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>any_motion</b></pre></div></td>
            <td>The any motion event (also called activity) uses the change between two successive
            acceleration measurements to detect changes in motion. An event is generated when this change
            exceeds the any_motion_threshold.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>no_motion</b></pre></div></td>
            <td>The no motion event (also called any inactivity) uses the change between two successive
            acceleration measurements to detect changes in motion. An event is generated when this change
            consecutively stays below the no_motion_threshold.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>low_g</b></pre></div></td>
            <td></td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>high_g</b></pre></div></td>
            <td></td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>single_tap</b></pre></div></td>
            <td></td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>double_tap</b></pre></div></td>
            <td></td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>flat</b></pre></div></td>
            <td></td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>orientation</b></pre></div></td>
            <td></td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>fifo_full</b></pre></div></td>
            <td></td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>fifo_wml</b></pre></div></td>
            <td></td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>new_data</b></pre></div></td>
            <td>This event serves the asynchronous reading of data. It is generated after storing a new value
            of z-axis acceleration data in the data register.</td>
        </tr>
    </tbody>
</table>

<h2 id="sensor-light-max44009">Sensor: light (MAX44009)</h2>

<h3 id="configuration-items-2">Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>manual_mode</b> : <span class="kt">bool</span></pre></div></td>
            <td>Defaults to <i>false</i>. Enables the manual configuration of integration time and high brightness mode.
            If set to false (default) the chip automatically selects those values.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>integration_time</b> : <span class="kt">MAX44009_IntegrationTime</span></pre></div></td>
            <td>Defaults to <i>MAX44009_IntegrationTime.MS_800</i>. The integration time is the time the sensor collects light for. In automatic mode
            (manual mode set to false) the chip automatically selects the integration time.
            
            This configuration item is only used when manual_mode is set to true.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>high_brightness</b> : <span class="kt">bool</span></pre></div></td>
            <td>Defaults to <i>false</i>. Set to true so that only 1/8 of the photo diode current goes to the ADC. This mode is used in
            high-brightness situations to avoid saturation/clipping effects of the ADC.
            
            This configuration item is only used when manual_mode is set to true.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>continuous_mode</b> : <span class="kt">bool</span></pre></div></td>
            <td>Defaults to <i>false</i>. In default mode (false) the IC measures lux intensity only once every 800ms regardless
            of integration time. This mode allows the part to operate at its lowest possible supply current.
            
            In continuous mode (true) the IC continuously measures lux intensity. That is, as soon as one
            reading is finished, a new one begins. If integration time is 6.25ms, readings are taken every 6.25ms.
            If integration time is 800ms, readings are taken every 800ms. In this mode, the part consumes slightly
            higher power than in the default mode.</td>
        </tr>
    </tbody>
</table>

<h4 id="modalities-2">Modalities</h4>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>intensity</b> : <span class="kt">uint32</span></pre></div></td>
            <td>The light intensity in millilux.</td>
        </tr>
    </tbody>
</table>

<h2 id="sensor-button-one-button">Sensor: button_one (Button)</h2>

<h4 id="modalities-3">Modalities</h4>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>is_pressed</b> : <span class="kt">bool</span></pre></div></td>
            <td>True if the button is pressed in this very right moment. False otherwise.</td>
        </tr>
    </tbody>
</table>

<h4 id="events-1">Events</h4>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>pressed</b></pre></div></td>
            <td>Fires after the button was pressed.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>released</b></pre></div></td>
            <td>Fires after the button was released.</td>
        </tr>
    </tbody>
</table>

<h2 id="sensor-button-two-button">Sensor: button_two (Button)</h2>

<h4 id="modalities-4">Modalities</h4>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>is_pressed</b> : <span class="kt">bool</span></pre></div></td>
            <td>True if the button is pressed in this very right moment. False otherwise.</td>
        </tr>
    </tbody>
</table>

<h4 id="events-2">Events</h4>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>pressed</b></pre></div></td>
            <td>Fires after the button was pressed.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>released</b></pre></div></td>
            <td>Fires after the button was released.</td>
        </tr>
    </tbody>
</table>

<h2 id="connectivity-ble">Connectivity: BLE</h2>

<p>BLE is Bluetooth Low Energy using GATT profiles.
At the moment we only support slave mode where the XDK becomes a device that can be connected to (as compared to connecting to some other device).</p>

<h3 id="configuration-items-3">Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>deviceName</b> : <span class="kt">string</span></pre></div></td>
            <td>The name of the device as advertised via GAP.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>serviceUid</b> : <span class="kt">uint32</span></pre></div></td>
            <td>The last four bytes of the UUID of the GATT service we'll create.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>advertisingInterval</b> : <span class="kt">int16</span></pre></div></td>
            <td>Defaults to <i>1000</i>. The advertising interval in milliseconds.</td>
        </tr>
    </tbody>
</table>

<h3 id="variable-configuration-items">Variable Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
            <td>Parameters</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>bool_characteristic</b> : <span class="kt">bool</span></pre></div></td>
            <td>Creates a boolean GATT characteristic.</td>
            <td>
                <ul>
                <li>
                    <div class="highlight"><pre> <b>UUID</b> : <span class="kt">uint32</span></pre></div>
                    The last four bytes of the characteristic UUID. Defaults to the hash code of the VCI name.
                </li>
                </ul>
            </td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>uint32_characteristic</b> : <span class="kt">uint32</span></pre></div></td>
            <td>Creates an unsigned integer GATT characteristic.</td>
            <td>
                <ul>
                <li>
                    <div class="highlight"><pre> <b>UUID</b> : <span class="kt">uint32</span></pre></div>
                    The last four bytes of the characteristic UUID. Defaults to the hash code of the VCI name.
                </li>
                </ul>
            </td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>int32_characteristic</b> : <span class="kt">int32</span></pre></div></td>
            <td>Creates a signed integer GATT characteristic.</td>
            <td>
                <ul>
                <li>
                    <div class="highlight"><pre> <b>UUID</b> : <span class="kt">uint32</span></pre></div>
                    The last four bytes of the characteristic UUID. Defaults to the hash code of the VCI name.
                </li>
                </ul>
            </td>
        </tr>
    </tbody>
</table>

<h2 id="connectivity-led">Connectivity: LED</h2>

<p>Displays state using three differently colored LEDs on the device.</p>

<h3 id="variable-configuration-items-1">Variable Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
            <td>Parameters</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>light_up</b> : <span class="kt">bool</span></pre></div></td>
            <td></td>
            <td>
                <ul>
                <li>
                    <div class="highlight"><pre> <b>color</b> : <span class="kt">LedColor</span></pre></div>
                </li>
                </ul>
            </td>
        </tr>
    </tbody>
</table>

<h2 id="connectivity-wlan">Connectivity: WLAN</h2>

<p>Specifies the connection to a wireless wide-area network, also refered to as WiFi.</p>

<h3 id="configuration-items-4">Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>ssid</b> : <span class="kt">string</span></pre></div></td>
            <td>The SSID of the WLAN network we want to connect to.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>psk</b> : <span class="kt">string</span></pre></div></td>
            <td>The pre-shared key of the WLAN we're connecting to. Note that this
            setting implies WPA2-PSK as authentication method. At this moment
            the WLAN connectivity does not support enterprise WLAN.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>useDHCP</b> : <span class="kt">bool</span></pre></div></td>
            <td>Defaults to <i>true</i>. If true we'll attempt to configure the wireless interface using DHCP and
            all static settings will be ignored. If false, the static settings have to
            be present.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>staticIP</b> : <span class="kt">string</span></pre></div></td>
            <td>The static IP address to use. This field has to be in the number-dot
            customary for IPv4 addresses (see IETF draft-main-ipaddr-text-rep-02).
            If useDHCP is true this field is ignored. If useDHCP is false, this field
            is mandatory.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>staticGW</b> : <span class="kt">string</span></pre></div></td>
            <td>The IP address of the default gateway. This field has to be in the number-dot
            customary for IPv4 addresses (see IETF draft-main-ipaddr-text-rep-02).
            If useDHCP is true this field is ignored. If useDHCP is false, this field
            is recommended.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>staticDNS</b> : <span class="kt">string</span></pre></div></td>
            <td>The IP address of the default DNS server. This field has to be in the number-dot
            customary for IPv4 addresses (see IETF draft-main-ipaddr-text-rep-02).
            If useDHCP is true this field is ignored. If useDHCP is false, this field
            is recommended.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>staticMask</b> : <span class="kt">string</span></pre></div></td>
            <td>The IP address of the default Subnet Mask. This field has to be in the number-dot
            customary for IPv4 addresses (see IETF draft-main-ipaddr-text-rep-02).
            If useDHCP is true this field is ignored. If useDHCP is false, this field
            is recommended.</td>
        </tr>
    </tbody>
</table>

<h2 id="connectivity-mqtt">Connectivity: MQTT</h2>

<p>MQTT (Message Queuing Telemetry Transport) is an ISO standard (ISO/IEC PRF 20922) publish-subscribe-based messaging protocol.
This MQTT connectivity requires WLAN to be setup as well.</p>

<h3 id="configuration-items-5">Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>transport</b> : <span class="kt">WLAN</span></pre></div></td>
            <td>The underlying transport connectivity we use to send the data out. In the future we might also
            support LoRa here.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>url</b> : <span class="kt">string</span></pre></div></td>
            <td>The URL pointing to the MQTT broker, for example: mqtt://does-not.exist:8000</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>clientId</b> : <span class="kt">string</span></pre></div></td>
            <td>The client identifier (here: clientID) is a identifier of each MQTT client
            connecting to a MQTT broker. It needs to be unique for the broker to
            know the state of the client.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>cleanSession</b> : <span class="kt">bool</span></pre></div></td>
            <td>Defaults to <i>false</i>. The clean session flag indicates to the broker whether the client wants
            to establish a clean session or a persistent session where all
            subscriptions and messages (QoS 1 & 2) are stored for the client.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>keepAliveInterval</b> : <span class="kt">uint32</span></pre></div></td>
            <td>Defaults to <i>60</i>. The keep alive interval (in seconds) is the time the client commits to for
            when sending regular pings to the broker. The broker responds to the
            pings enabling both sides to determine if the other one is still alive and
            reachable.</td>
        </tr>
    </tbody>
</table>

<h3 id="variable-configuration-items-2">Variable Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
            <td>Parameters</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>topic</b> : <span class="kt">string</span></pre></div></td>
            <td>Publishes a message to a particular topic.</td>
            <td>
                <ul>
                <li>
                    <div class="highlight"><pre> <b>name</b> : <span class="kt">string</span></pre></div>
                </li>
                <li>
                    <div class="highlight"><pre><small>optional</small>  <b>qos</b> : <span class="kt">uint32</span></pre></div>
                </li>
                </ul>
            </td>
        </tr>
    </tbody>
</table>

<h2 id="connectivity-httprestclient">Connectivity: HttpRestClient</h2>

<p>Implements an HTTP REST Client over WIFI</p>

<h3 id="configuration-items-6">Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>transport</b> : <span class="kt">WLAN</span></pre></div></td>
            <td>The underlying transport connectivity we use to send the data out. In the future we might also
            support LoRa here.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>endpointBase</b> : <span class="kt">string</span></pre></div></td>
            <td>The part of the endpoint URL common to all requests, e.g. http://foobar.com/api/v1</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>header</b> : <span class="kt">string</span></pre></div></td>
            <td>A custom header which is added to each HTTP request. Example:
              X-Auth: MySecretToken\nX-Version: 1.0</td>
        </tr>
    </tbody>
</table>

<h3 id="variable-configuration-items-3">Variable Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
            <td>Parameters</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>resource</b> : <span class="kt">string</span></pre></div></td>
            <td></td>
            <td>
                <ul>
                <li>
                    <div class="highlight"><pre> <b>endpoint</b> : <span class="kt">string</span></pre></div>
                </li>
                <li>
                    <div class="highlight"><pre><small>optional</small>  <b>contentType</b> : <span class="kt">string</span></pre></div>
                </li>
                <li>
                    <div class="highlight"><pre><small>optional</small>  <b>writeMethod</b> : <span class="kt">HttpMethod</span></pre></div>
                </li>
                <li>
                    <div class="highlight"><pre><small>optional</small>  <b>readMethod</b> : <span class="kt">HttpMethod</span></pre></div>
                </li>
                </ul>
            </td>
        </tr>
    </tbody>
</table>


			<aside class="copyright" role="note">
				
				&copy; 2018 The Eclipse Mita Project &ndash;
				
				Documentation built with
				<a href="https://www.gohugo.io" target="_blank">Hugo</a>
				using the
				<a href="http://github.com/digitalcraftsman/hugo-material-docs" target="_blank">Material</a> theme.
			</aside>

			<footer class="footer">
				

<nav class="pagination" aria-label="Footer">
  <div class="previous">
  
      <a href="../../mita/language/functions/" title="Functions">
        <span class="direction">
          Previous
        </span>
        <div class="page">
          <div class="button button-previous" role="button" aria-label="Previous">
            <i class="icon icon-back"></i>
          </div>
          <div class="stretch">
            <div class="title">
              Functions
            </div>
          </div>
        </div>
      </a>
  
  </div>

  <div class="next">
  
      <a href="../../mita/language/foreignfunctioninterface/" title="Foreign Function Interface">
        <span class="direction">
          Next
        </span>
        <div class="page">
          <div class="stretch">
            <div class="title">
              Foreign Function Interface
            </div>
          </div>
          <div class="button button-next" role="button" aria-label="Next">
            <i class="icon icon-forward"></i>
          </div>
        </div>
      </a>
  
  </div>
</nav>





			</footer>
		</div>
	</article>

	<div class="results" role="status" aria-live="polite">
		<div class="scrollable">
			<div class="wrapper">
				<div class="meta"></div>
				<div class="list"></div>
			</div>
		</div>
	</div>
</main>

    <script>
    
      var base_url = '';
      var repo_id  = '';
    
    </script>

    <script src="../../mita/javascripts/application.js"></script>
    

    <script>
      /* Add headers to scrollspy */
      var headers   = document.getElementsByTagName("h2");
      var scrollspy = document.getElementById('scrollspy');

      if(scrollspy) {
        if(headers.length > 0) {
          for(var i = 0; i < headers.length; i++) {
            var li = document.createElement("li");
            li.setAttribute("class", "anchor");

            var a  = document.createElement("a");
            a.setAttribute("href", "#" + headers[i].id);
            a.setAttribute("title", headers[i].innerHTML);
            a.innerHTML = headers[i].innerHTML;

            li.appendChild(a)
            scrollspy.appendChild(li);
          }
        } else {
          scrollspy.parentElement.removeChild(scrollspy)
        }


        /* Add permanent link next to the headers */
        var headers = document.querySelectorAll("h1, h2, h3, h4, h5, h6");

        for(var i = 0; i < headers.length; i++) {
            var a = document.createElement("a");
            a.setAttribute("class", "headerlink");
            a.setAttribute("href", "#" + headers[i].id);
            a.setAttribute("title", "Permanent link")
            a.innerHTML = "#";
            headers[i].appendChild(a);
        }
      }
    </script>

    

    <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.8.0/highlight.min.js"></script>
    <script>hljs.initHighlightingOnLoad();</script>
  </body>
</html>

