{"id":22868497,"url":"https://github.com/datavenueliveobjects/liveobjects_sdk_for_linux","last_synced_at":"2026-05-03T18:33:59.495Z","repository":{"id":40268906,"uuid":"281998703","full_name":"DatavenueLiveObjects/LiveObjects_SDK_for_Linux","owner":"DatavenueLiveObjects","description":"Live Objects SDK for Linux environment (including Raspberry Pi)","archived":false,"fork":false,"pushed_at":"2022-11-30T10:19:33.000Z","size":7161,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-31T10:51:21.685Z","etag":null,"topics":["cross-compilation","linux","mqtt","mqtts","raspberry","raspberry-pi","raspberrypi"],"latest_commit_sha":null,"homepage":"https://liveobjects.orange-business.com","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DatavenueLiveObjects.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-07-23T16:11:04.000Z","updated_at":"2022-12-14T23:21:46.000Z","dependencies_parsed_at":"2022-07-28T21:08:49.947Z","dependency_job_id":null,"html_url":"https://github.com/DatavenueLiveObjects/LiveObjects_SDK_for_Linux","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DatavenueLiveObjects/LiveObjects_SDK_for_Linux","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DatavenueLiveObjects%2FLiveObjects_SDK_for_Linux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DatavenueLiveObjects%2FLiveObjects_SDK_for_Linux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DatavenueLiveObjects%2FLiveObjects_SDK_for_Linux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DatavenueLiveObjects%2FLiveObjects_SDK_for_Linux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DatavenueLiveObjects","download_url":"https://codeload.github.com/DatavenueLiveObjects/LiveObjects_SDK_for_Linux/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DatavenueLiveObjects%2FLiveObjects_SDK_for_Linux/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32579869,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cross-compilation","linux","mqtt","mqtts","raspberry","raspberry-pi","raspberrypi"],"created_at":"2024-12-13T12:35:23.682Z","updated_at":"2026-05-03T18:33:59.478Z","avatar_url":"https://github.com/DatavenueLiveObjects.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# LiveObject IoT Client - IoTSoftBox-MQTT\n\n\nPlease refers to the [Changelog](ChangeLog.md) to check the latest change and improvement.\n\n---\n\nThis repository contains LiveObject IoT Client Library (used to connect devices to LiveObject Server from our partners).\n\nPlease, have a look to the [user manual](docs/liveobjects_starterkit_linux_v1.2.pdf) to have a presentation of the library and to be more familiar with it.\n\nFor more information about datavenue, you can visit [Datavenue Live Objects - complete guide](https://liveobjects.orange-business.com/doc/html/lo_manual.html).\n\nespecially the [Device mode](https://liveobjects.orange-business.com/doc/html/lo_manual.html#MQTT_MODE_DEVICE) section.\n\nHere is a table of content for this file:\n\n- [Requirement](#requirement)\n\t- [Hardware](#hardware)\n\t- [Software](#software)\n\t- [LiveObjects API Key](#liveobjects-api-key)\n\t- [Setup the LiveObjects header file](#setup-the-liveobjects-header-file)\n\t\t- [API key](#api-key)\n\t\t- [Security](#security)\n- [Configure workstation for cross compilation](#configure-workstation-for-cross-compilation)\n\t- [Linux Ubuntu](#linux-ubuntu)\n\t- [Linux Debian](#linux-debian)\n\t- [Windows](#windows)\n- [Build](#build)\n\t- [Submodule update](#submodule-update)\n\t- [Linux](#linux)\n\t\t- [Local build](#local-build)\n\t\t- [Cross-Compilation build](#cross-compilation-build)\n\t- [Windows](#windows)\n\t- [Debug](#debug)\n\t- [Syslog](#syslog)\n- [Global structure](#global-structure)\n- [Detailed structure](#detailed-structure)\n\t- [Config-template](#config-template)\n\t- [Example](#example)\n\t- [Lib](#lib)\n\t\t- [jsmn](#jsmn)\n\t\t- [mbedTLS](#mbedtls)\n\t\t- [paho mqtt](#paho-mqtt)\n\t\t- [WiringPi](#WiringPi)\n\t- [Mqtt_live_objects](#mqtt_live_objects)\n\t\t- [LiveObjects-iotSoftbox-mqtt-core](#liveobjects-iotsoftbox-mqtt-core)\n\t\t- [Platforms](#platforms)\n\t- [Script](#script)\n- [Doxygen documentation](#doxygen-documentation)\n- [Disable mbedTLS tests and examples](#disable-mbedtls-tests-and-examples)\n- [Application Control](#application-control)\n\t- [Live Objects Portal](#live-objects-portal)\n\t- [Live Objects Swagger](#live-objects-swagger)\n\n## Requirement\n\n### Hardware\n\n* A Linux platform like a Raspberry Pi board.\n* A connection to the Internet.\n\n### Software\n\n* Cmake: to generate the Makefiles\n* Cross-compiling toolchain: to build the library to any architechture\n* A SSH client (If you're using [Windows](http://www.putty.org/))\n* [LiveObjects account](https://liveobjects.orange-business.com)\n\nYou can also use SCP to transfer files to your devices ([Windows](http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)).\n\n### LiveObjects API Key\n\nVisit [LiveObjects portal](https://liveobjects.orange-business.com/#/liveobjects)\n\n1. You need to request the creation of a developer account.\n2. Then, with your LiveObjects user identifier, login to the [Live Objects portal](https://liveobjects.orange-business.com/#/login).\n3. Create an [API key](https://liveobjects.orange-business.com/#/administration/apikeys) for your device. Give it a name, select the *Device access* role and validate. Copy the key.\n\n### Setup the LiveObjects header file\n\n**Warning : each example has independent configuration**\n\n#### API key\nIn the config directory of every example, you will find 3 files to customize the behavior of the library.\nEdit those files to change some values. in particular the **LiveObjects API key** in the main file `nameOfTheExample.c`.\n\nFor security purpose, you will need to split the ApiKey in two parts.\nThe first part is the first sixteen char of the ApiKey and the second one is the last sixteen char of the ApiKey.\n An example is given below:\n\n```c\n/* Default LiveObjects device settings : name space and network interface identifier */\n#define LOC_CLIENT_DEV_NAME_SPACE            \"Linux\"\n#define IFACE\t\"eth0\"\n\n/** Here, set your LiveObject Apikey. It is mandatory to run the application\n *\n * C_LOC_CLIENT_DEV_API_KEY_P1 must be the first sixteen char of the ApiKey\n * C_LOC_CLIENT_DEV_API_KEY_P1 must be the last sixteen char of the ApiKey\n *\n * If your APIKEY is 0123456789abcdeffedcba9876543210 then\n * it should look like this :\n *\n * #define C_LOC_CLIENT_DEV_API_KEY_P1\t\t\t0x0123456789abcdef\n * #define C_LOC_CLIENT_DEV_API_KEY_P2\t\t\t0xfedcba9876543210\n *\n * */\n\n#define C_LOC_CLIENT_DEV_API_KEY_P1\t\t\t0x0123456789abcdef\n#define C_LOC_CLIENT_DEV_API_KEY_P2\t\t\t0xfedcba9876543210\n```\n\n#### Security\nFrom the file `liveobjects_dev_params.h` you can also disable TLS By switching `#define SECURITY_ENABLED 1` to 0.\nIf the security is disabled your device will communicate in plain text with the platform.\n\nBy disabling the security, MbedTLS code's will still be embedded because it is used by the resource appliance.\n\nYou can avoid compiling mbedTLS by uncommenting `//#define LOC_FEATURE_MBEDTLS 0` in  `liveobjects_dev_config.h` but resource related feature won't be available.\n\n### Compilation on RaspberryPi\nThe easiest way to start using this SDK with RaspberryPi is to skip cross-compilation and compile this library/examples on RaspberryPi itself.\nTo compile on RaspberryPi, it's advised to use the latest Raspbian distribution, then after setting internet connection on RaspberryPi, you can use below commands to install the required software and compile this library on fresh Raspbian:\u003cbr\u003e\n\ninstall required packages:\n```bash\nsudo apt-get update\nsudo apt-get install git\nsudo apt-get install cmake\n```\nPrepare build environment:\n```bash\ngit clone https://github.com/DatavenueLiveObjects/LiveObjects_SDK_for_Linux\ncd LiveObjects_SDK_for_Linux\n(optional) git checkout develop\ngit submodule init\ngit submodule update\nmkdir build; cd build\ncmake ..\n```\n\n\u003cb\u003eMake sure that you set API keys for each of example in each of examples you want to run.... they're defined in:\u003c/b\u003e\u003cbr\u003e\n*examples/liveobjects_sample_basic/basic.c*\u003cbr\u003e\n*examples/liveobjects_sample_minimal/minimal.c*\u003cbr\u003e\n*examples/liveobjects_sample_update/update.c*\u003cbr\u003e\n*examples/liveobjects_sample_amb_dist/amb_dist.c*\u003cbr\u003e\n\n\nto compile \"minimal\" example: \u003cbr\u003e\n`*commands need to be run in \"build\" directory created in previous steps`:\u003cbr\u003e\n\n```bash\nmake minimal\n```\nto compile \"basic\" example: \u003cbr\u003e\n```bash\nmake basic\n```\nto compile \"update\" example: \u003cbr\u003e\n```bash\nmake update\n```\nto compile \"amb_dist\" example: \u003cbr\u003e\n```bash\nmake amb_dist\n```\n\nAfter above steps you should get executable files in `build/bin` directory, to run it:\n```bash\ncd bin\n```\nto run \"minimal\" example:\n```bash\n./minimal\n```\nto run \"basic\" example:\n```bash\n./basic\n```\nto run \"update\" example:\n\n```bash\n./update\n```\nto run \"amb_dist\" example:\n\n```bash\n./amb_dist\n```\n\n## Cross compilation\n\nExample given for a Raspberry PI 3 B (`armeabihf` compiler).\nFor a Raspberry PI 1 B replace `armeabihf` by `armeabi` so for the compiler use `arm-linux-gnueabi-gcc` instead of `arm-linux-gnueabihf-gcc`\n\n### Linux Ubuntu\n\nTested for Ubuntu 16.04\n\n**Install the cross compiler**\n\n```bash\nsudo apt-get update \u0026\u0026 sudo apt-get upgrade\n# Raspberry Pi 1\n# sudo apt-get install git git-flow cmake gcc-arm-linux-gnueabi\nsudo apt-get install git git-flow cmake gcc-arm-linux-gnueabihf\n```\n\n### Linux Debian\n\nTested for Debian 8.6\n\n**All commands have to be run as root (su command)**\n\n**For the Raspberry Pi 1** replace `armhf` by `armel`.\nThe cross-compiler remains `arm-linux-gnueabi-gcc` for the Pi 1.\n\n```bash\necho \"deb http://emdebian.org/tools/debian/ jessie main\" \u003e /etc/apt/sources.list.d/crosstools.list\ncurl http://emdebian.org/tools/debian/emdebian-toolchain-archive.key | sudo apt-key add -\n# Raspberry Pi 1\n# sudo dpkg --add-architecture armel\nsudo dpkg --add-architecture armhf\nsudo apt-get update\n# Raspberry Pi 1\n# sudo apt-get install git git-flow cmake crossbuild-essential-armel\nsudo apt-get install git git-flow cmake crossbuild-essential-armhf\n```\n\n### Windows\n\n1. Install the [compiler](http://gnutoolchains.com/raspberry/).\n2. Update the cross compiler environment, by downloading the Sysroot. To do so use ```C:\\SysGCC\\Raspberry\\TOOLS\\UpdateSysroot.bat``` if ```C:\\SysGCC``` is the installation path.\n3. Install [CMake](https://cmake.org/download/).\n4. Install [Perl](http://strawberryperl.com/).\n\nA detailed installation can be found [there](wiki/detailed-windows-setup.md).\n\n## Build\n\n### Submodule update\n\nYou will need to download the third-party libraries.\n\nTwo options for that :\n\n* Using --recursive when cloning the main library.\n\n\t```bash\n\tgit clone --recursive https://github.com/Orange-OpenSource/LiveObjects-iotSoftbox-mqtt-linux.git\n\t```\n\n* Using git submodule in the repository\n\n\t```bash\n\tgit clone https://github.com/Orange-OpenSource/LiveObjects-iotSoftbox-mqtt-linux.git\n\tcd LiveObjects-iotSoftbox-mqtt-linux\n\tgit submodule init\n\tgit submodule update\n\t```\n\n### Linux\n\n#### Local build\n\n```bash\ncd LiveObjects-iotSoftbox-mqtt-linux\nmkdir build\ncd build\ncmake ..\nmake\n```\n\n#### Cross-Compilation build\n\n```bash\ncd LiveObjects-iotSoftbox-mqtt-linux\nmkdir build\ncd build\ncmake -DCMAKE_C_COMPILER=\u003cPath to the compiler\u003e ..\nmake\n```\nFor example on Ubuntu build command will be \u003cbr\u003e\n```cmake -DCMAKE_C_COMPILER=/usr/bin/arm-linux-gnueabihf-gcc ..```\n### Windows\n\nYou can only cross-compile the program on Windows. This is how to do it from cmd.exe:\n\n```bash\ncd LiveObjects-iotSoftbox-mqtt-linux\nmkdir build\ncd build\ncopy ../script/cmakeWinSetup.bat .\ncmakeWinSetup.bat\nmake\n```\n\nIf you are using git bash for instance it will be slightly different:\n- Use cp instead of copy\n- run cmakeWinSetup.bat like this : ```./cmakeWinSetup.bat```\n\n### Debug\n\nTo add the debug flag to the compiler, you must run cmake with ```-DCMAKE_BUILD_TYPE=Debug```\n\nYou can also change the debug Level (more or less verbose) into each example.\n```c\n#define DBG_DFT_MAIN_LOG_LEVEL \u003cDebug Level\u003e\n```\nIt goes from 1 (only error) to 6 (everything).\n\nIf you want to remove the message dump, change ```DBG_DFT_MSG_DUMP``` to 0x0,\n0x1, 0x2, 0x4 and 0x8 are intermediate levels\n\n### Syslog\n\nYou can log everything inside the syslog by switching\n```c\n#define SYSLOG 0\n```\n to 1 in \"config/liveobjects_dev_params.h\". It will print everything into /var/log/syslog instead of the standard output.\n\n## Global structure\n\n```\niotsoftbox-mqtt-linux\n├── Config-template\n├── examples\n├── lib\n├── mbedtls_config\n├── mqtt_live_objects\n├── script\n└── wiki\n\n```\n- config-template: Setup the library from here\n- [examples](examples/README.md): bunch of examples using the library.\n- lib: all third-party libraries\n- mbedtls_config: extra config for mbedtls\n- mqtt_live_objects: specific implementations to platforms and common code with others client (like Arduino or mbed)\n- script: a bunch of various script to make things easy\n- wiki: Various help / information\n\n## Detailed structure\n\nIn alphabetical order.\n\n### Config-template\n\nThis repository contains templates of all mandatories configurations files. Those files must be present in each examples.\n\n### Example\n\nGo [there](examples/README.md) to get more informations.\n\n### Lib\n\nThere is a list of the third-party libraries used in this library and their utilities:\n\n#### jsmn\n\n[jsmn](https://github.com/zserge/jsmn) (pronounced like 'jasmine') is a minimalistic JSON parser in C. It can be easily integrated into resource-limited or embedded projects.\n\n#### mbedTLS\n\n[mbed TLS](https://github.com/ARMmbed/mbedtls) offers an SSL library with an intuitive API and readable source code, so you can actually understand what the code does. Also the mbed TLS modules are as loosely coupled as possible and written in the portable C language. This allows you to use the parts you need, without having to include the total library.\n\n#### paho mqtt\n\n[paho mqtt](https://github.com/eclipse/paho.mqtt.embedded-c) is part of the Eclipse Paho project, which provides open-source client implementations of MQTT and MQTT-SN messaging protocols aimed at new, existing, and emerging applications for the Internet of Things.\n\n#### WiringPi\n\n[WiringPi](https://github.com/WiringPi/WiringPi) is Gordon's Arduino wiring-like WiringPi Library for the Raspberry Pi (Unofficial Mirror for WiringPi bindings).\n\n### Mqtt_live_objects\n\n#### LiveObjects-iotSoftbox-mqtt-core\n\nIn the `LiveObjects-iotSoftbox-mqtt-core` folder, only platform-free code is present, you should be able to use this code on any device.\n`LiveObjects-iotSoftbox-mqtt-core` is a git submodule.\n\n```\nmqtt_live_objects\n├── LiveObjects-iotSoftbox-mqtt-core\n│   ├── iotsoftbox-core\n│   ├── liveobjects-client\n│   ├── paho-mqttclient-embedded-c\n```\n\n* iotsoftbox-core should contains the core code\n* liveobjects-client should contains interfaces for users\n* paho-mqttclient-embedded-c should contains the MQTTClient.\n\n#### Platforms\n\n```\nmqtt_live_objects\n├── platforms\n│   └── \u003cA platflorm name\u003e\n│       ├── iotsoftbox-\u003cA platflorm name\u003e\n│       └── liveobjects-sys\n```\n\n* iotsoftbox-\u003cA platflorm name\\\u003e should contains systems files specific to a platform (.c)\n* liveobjects-sys should contains headers files specific to a platform (.h)\n\n### Script\n\n* cmakeWinSetup.bat is used to invoke cmake in Windows with preselected variables like the path to the compiler\n* deb_maker.sh allow to automate the creation of a deb archive.\n* wiringPiInstaller.sh to automate the installation of WiringPi\n\n## Doxygen documentation\n\nTo generate the Doxygen documentation, please, use the following command from the project root folder:\n\n```bash\ndoxygen mqtt_live_objects/LiveObjects-iotSoftbox-mqtt-core/doxygen/liveobjects_iotsoftbox.doxyfile\n```\n\nThe doc will be generated into an apidoc folder. Please, open `apidoc/html/index.html` to start browsing the doc.\n\n## Disable mbedTLS tests and examples\n\nDuring the build, mbedTLS will also compile some tests and examples which will slow down the build considerably.\nTo disable that, open `lib/mbedtls/CMakeLists.txt` and switch the two flags line 7 and 15 to **OFF**.\n\n## Application Control\n\n### Live Objects Portal\n\nUsing your Live Objects user account, go to [Live Objects Portal](https://liveobjects.orange-business.com/#/login).\n\n### Live Objects Swagger\n\nYou can use the Swagger to create MQTT/JSON exchanges with your device. For more information, please visit [Live Objects Swagger User Interface](https://liveobjects.orange-business.com/swagger-ui/index.html).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatavenueliveobjects%2Fliveobjects_sdk_for_linux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatavenueliveobjects%2Fliveobjects_sdk_for_linux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatavenueliveobjects%2Fliveobjects_sdk_for_linux/lists"}