# Device SDK

Since KPN Things is a data platform, it prescribes with which data format your Device should communicate with KPN Things. The KPN Things Device SDK helps you to quickly connect your Device to KPN Things.&#x20;

<figure><img src="https://1453626848-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl6RrePMSAjRvOgcHjMBZ%2Fuploads%2FEJtZZJ72Km3Gw2bohPYu%2Fimage.png?alt=media&#x26;token=b1ff6346-7566-4d6c-8c4c-a967553477a7" alt=""><figcaption><p>Device SDK on your Device to set up communication with KPN Things.</p></figcaption></figure>

You can find the Device SDK library on Github: <https://kpn-iot.github.io/thingsml-c-library/>

The Device SDK is mainly based on the [ThingsML](https://docs.kpnthings.com/kpn-things/building-blocks/data-processing/thingsml-and-senml/thingsml) data format. ThingsML is an extension of SenML created by KPN. For SenML we have also developed a library which is available for C, Python, and MicroPython. Visit the [SenML library documentation](https://kpn-iot.github.io/senml-library/).

The Device SDK is available in the following languages:

* [Things Device SDK in C++](https://github.com/kpn-iot/thingsml-c-library)
* [Things Device SDK in Python](https://github.com/kpn-iot/senml-python-library)
* [Things Device SDK in MicroPython](https://github.com/kpn-iot/senml-micropython-library)

## Supported devices <a href="#supported-platforms" id="supported-platforms"></a>

Specifically, the Device SDK has been tested on the following Devices:

<table data-header-hidden><thead><tr><th width="129">Language</th><th>LoRaWAN</th><th>M2M</th><th>Internet</th></tr></thead><tbody><tr><td><strong>Language</strong></td><td><strong>LoRaWAN</strong></td><td><strong>M2M</strong></td><td><strong>Internet</strong></td></tr><tr><td></td><td></td><td></td><td></td></tr><tr><td>C++</td><td><ul><li><a href="../../getting-started/tutorials/connect-devices/arduino-mkr-wan-1300-1310">Arduino MKR WAN 1300/1310</a></li></ul><p>Below are old devices, do not use for new designs</p><ul><li><a href="../../getting-started/tutorials/connect-devices/marvin-development-board">Marvin LoRaWAN developer board</a> (Arduino)</li><li><a href="https://kpn-iot.github.io/thingsml-c-library/?c--mbed#installation">STM32 Nucleo-L152RE</a> (Mbed OS)</li><li><a href="https://market.thingpark.com/sodaq-one-eu-rn2483-v3.html">Sodaq on</a></li></ul></td><td><ul><li><a href="../../getting-started/tutorials/connect-devices/arduino-mkr-nb-1500">Arduino MKR NB 1500</a></li></ul><p>Below are old devices, do not use for new designs</p><ul><li><a href="https://kpn-iot.github.io/thingsml-c-library/?c--arduino#installation">Arduino MKR GSM 1400</a></li><li><a href="../../getting-started/tutorials/connect-devices/sodaq-r412m">Sodaq Sara AFF</a> (Arduino)</li></ul><p><br><br></p></td><td><ul><li>PC (via <a href="https://bazel.build/">Bazel</a>)</li><li><a href="https://os.mbed.com/platforms/mbed-LPC1768/">mbed LPC1768</a></li><li><a href="https://www.espressif.com/en/products/hardware/esp32/overview">Esp32</a></li></ul></td></tr><tr><td>Python</td><td></td><td></td><td><ul><li>Raspberry 3</li><li>PC</li></ul></td></tr><tr><td><p>Micro</p><p>Python</p></td><td></td><td><p>This is an old device, do not use for new designs</p><ul><li><a href="https://docs.pycom.io/datasheets/development/gpy/">GPy</a></li></ul></td><td><p>This is an old device, do not use for new designs</p><ul><li><a href="https://docs.pycom.io/datasheets/development/wipy3/">WiPy</a></li></ul></td></tr></tbody></table>
